Après avoir utilisé Python 5 ans, je me suis tourné vers Go

Je aime Python, au cours des cinq dernières années, il a été ma langue préférée. Python est très sympathique et facile à apprendre, à ce jour encore super efficace.

Nous pouvons l'utiliser pour presque tout - de créer des scripts simples, développement Web, la visualisation de données et d'apprentissage de la machine.

Mais avec les Go arrive à maturité, la base utilisateur forte, en fait, de plus en plus d'entreprises après une analyse comparative réussie a décidé de se tourner vers Go, Go m'a conduit à lire beaucoup de connaissances, la réflexion sur la façon de l'ajouter à mon jeu d'outils pour application de ses avantages au travail.

Cet article ne traitera pas quelle meilleure langage de programmation - Python, ou Go, il y a beaucoup de messages sur le sujet et en comparant le réseau, il me semble la différence dépend en grande partie du cas d'utilisation.

Dans cet article, je vais vous raconter mon voyage de Python Go, et vous donner quelques conseils, laissez-moi vous aider à comprendre certaines des ressources nécessaires pour réussir dans ce voyage, puis en direct pour raconter l'histoire.

texte

Les principales différences rencontrées

Bien entendu, en tant que première étape, j'ai parcouru le fonctionnaire superbe « Tour Of Go », ce qui m'a certainement donné une base solide de connaissances sur la grammaire Go.

Afin de renforcer cette connaissance, je lus pour Python programmeurs ce e-book, afin que je puisse continuer à l'étape suivante, je pense que c'est le plus éducatif d'essais et d'erreurs.

Je l'habitude d'utiliser les fonctions couramment utilisées en Python, comme sérialisation JSON ou appels HTTP, et essayer de les écrire dans Go.

Par un concept similaire dans l'application Go en Python, et tout en conservant une fonctionnalités de langage statique, j'ai rencontré quelques-unes des principales différences entre Go et Python.

mise en page du projet

Tout d'abord, en général Python ne nécessitent pas de hiérarchie des répertoires spécifiques, au contraire, Go est nécessaire.

Utilisez l'outil de la mise en page « standard », ce qui le rend un peu plus complexe que Python, a plus de travail, mais les avantages sont la base de code bien structuré, il encourage le code modulaire, à élargir l'ampleur du projet peut rester organisé.

L'article officiel « Comment écrire Go Code » a un chapitre explique comment construire un espace de travail clair.

typage statique et forte

Go est un langage typé statiquement, parce que nous avons utilisé pour utiliser Python ou Ruby et d'autres langage typé dynamiquement, si tôt se sentira mal à l'aise.

Sans aucun doute, la langue dynamique plus sujette aux erreurs, et il faut plus d'efforts à l'entrée de validation pour prévenir ou résoudre les erreurs grammaticales communes. Pensez calcule deux entiers une somme de fonctions, ne peut pas garantir que l'utilisateur ne dispose pas en fait une chaîne passée à la fonction lors de son utilisation - ce qui provoque une TypeError.

cette situation Il ne se produira pas En Allez, parce que la nécessité de déclarer le type de chaque variable, la fonction peut être obtenue type de variable, fonction et quel type de rendement variable.

Au début, il a été ennuyeux, le sentiment de codage beaucoup plus lent, mais après une courte Go par l'apprentissage et l'écriture, vous vraiment se habituer à utiliser, et a constaté que cela permet d'économiser réellement le temps, rendre le code plus robuste.

en même temps natif

Utilisez l'outil de goroutines et canaux prise en charge native simultanée, vraiment facile.

Tout d'abord, le concept de canaux peut être un peu peu de mal, et aussi facilement comme une sorte de structure de données ou la mise en uvre mise en file. En fait, plus facile à comprendre ces concepts vers le bas, vous pouvez vraiment profiter de la valeur qu'ils apportent, et pleinement utilisé.

Ivan Daniluk goroutines et des canaux pour une visualisation simple:

Copiez le code

principale du paquet func main () { // créer un nouveau canal de type int ch: = make (chan int) // commencer une nouvelle goroutine anonyme aller fonc () { // envoi 42 au canal ch < - 42 } () // lecture du canal < -ch }

Pour plus d'exemples, voir goutoutines, HootSuite canaux de la vie réelle et sélectionnez les états à réaliser, ou ArdanLabs grande explication.

En utilisant JSON

Allez là-bas, plus utilisé json.loads (). En Python, désérialisée objet JSON est très simple, il suffit d'utiliser json.loads peut! Mais dans Go, comme un langage statiquement typé, cette simple opération peut être plus difficile.

Dans Go, JSON peut être résolu dans une structure prédéfinie. Tous les champs ne convient pas à la structure sont ignorés, cela est une bonne chose, peut l'utiliser comme un accord préalable défini entre les parties. Ne pas besoin de se sentir « surpris » par les données reçues dans JSON, JSON et les types de terrain exigent le consentement des parties ».

Copiez le code

{ "Première": "Elad", « Dernière »: « VLEP », "Location": "IL", "Id": "93" }

Copiez le code

de type struct {AccountData Première string`json: "d'abord" ` Dernière string`json: "dernier" ` Localisation string`json: "emplacement" ` ID string`json: "id" ` }

Bien sûr, vous pouvez toujours désérialiser le cas en l'absence de JSON structurelle, mais devrait être évitée si possible de le faire, rester nature statique de la langue est toujours un meilleur choix.

Allez afin de mieux comprendre comment écrire JSON, vous pouvez consulter cet article ou « Go par exemple », c'est la ressource ultime peut être trouvé comme une feuille de triche.

Si vous êtes trop paresseux et ne cherche pas à convertir la structure JSON Go? Pas de problème - cet outil peut vous aider.

code propre

Allez compilateur essaie toujours de garder le code propre, les variables inutilisées seront traitées comme une erreur de compilation. De plus, Go utilise une méthode unique pour laisser l'ordinateur peut traiter les problèmes de mise en forme la plupart. Allez lorsque vous enregistrez ou exécute Compile gofmt programme, qui traitera la plupart des problèmes de mise en forme.

Si vous ne vous souciez pas une variable? Pas de problème! Il suffit d'utiliser _ (underscore) et l'affecter à un identifiant vide peut être.

Go contient une information de format de document incontournable est « efficace Go ».

Trouver les bonnes librairies et cadres

Je suis vraiment habitué des cadres Python et les bibliothèques, comme Flask, Jinja2, même demande Kazoo, je suis vraiment inquiet de trouver Go approprié dans. Mais on peut le deviner, cette grande communauté Allez a sa propre bibliothèque unique et vous permet même d'oublier complètement ce que les anciennes préférences Oui.

Voici quelques préférences personnelles:

Les demandes Python  = > net / http

Intégré net / http client fournit HTTP et serveur, ont obtenu une grande facilité d'utilisation et très bon.

+ Flask Jinja2  = >  gin

Gin est un framework Web HTTP, a une API très simple - les paramètres de chemin, télécharger des fichiers, routage de paquets (/ api / v1, / api / v2), le format de journal personnalisé, fournissant des fichiers statiques, HTML rendu, véritable personnalisation puissante middleware. Voici une référence de référence.

CLI Création = >  cobra

bibliothèque Cobra peut être utilisé pour créer de puissantes applications CLI, mais fournit également des procédures pour générer des applications et des fichiers de commandes. De nombreux projets sont largement utilisés Utilisez l'outil de construction Cobra, y compris Kubernetes, ETCD et OpenShift.

Hautement recommandé des bibliothèques supplémentaires sont les suivants: Viper, et une grande liste de Gonfig - Awsome-Go.

autres ressources

Allez mon voyage, voici quelques ressources utiles ont joué un rôle important:

Francesc Campoy - certain Pour regarder sa chaîne YouTube et le profil GitHub. Francesc a également organisé quelques grands séminaires - - Go Outillage en action et applications Web Workshop.

GopherCon vidéo

Go Exemples Web

plusieurs compte Twitter: golang hebdomadaire, Gopher Académie, golang Nouvelles.

résumé

En tant qu'utilisateur Python passionné depuis cinq ans, je crains que la transition sera douloureuse à. Mais je suis vraiment heureux de voir une communauté vraiment forte, le taux de cotisation et d'entretien sont d'excellentes ressources qui peuvent vous aider à faciliter la transition Go. Go est l'un des langages de programmation de plus en plus rapide, Google peut attendre une bonne gestion, alors allez dans les applications de cloud computing potentiels et l'infrastructure langue préférée.

À l'heure actuelle on the Go est un moment privilégié pour encourager tout le monde à apprendre et à devenir Gophers!

Lien original: https://medium.com/appsflyer/my-journey-from-python-to-go-3859783c6b3c

« Fire Emblem: Heroes »: Quand elle se jette, je me suis retrouvé comme un autre
Précédent
Fan Bingbing Feng Xiaogang a été attribuée à une réunion secrète, soupçonné de revenir pour discuter de « Mobile 2 » problèmes de libération
Prochain
Bani Qiao né en 2018 pour partager le dernier fond d'écran d'onde
CCTV hôte Zhu Xun fils âgé de 15 ans, l'exposition photo rare, l'utilisateur: Heureusement, ressemble à maman
« Cuisine britannique comment sombre - II » regarder les étoiles grand défi
3DS « Echoes Fire Emblem principaux Autre roi héros » version chinoise publié
les interruptions de service Tencent à grande échelle: Département des opérateurs de réseau Shanghai défaillance de fibre
299 $ NetEase soigneusement sélectionnés VS 900 yuans JINS | pour la première fois en ligne avec des lunettes
Qiyang County a tenu 2019 Fête du Printemps Gala
« Jouer haut pour sauver l'avenir » est un drame magique
Attaque sur le système de recommandation: l'apprentissage multi-objectifs comment permettre aux utilisateurs connaissent presque augmentation des taux d'interaction de 100%?
« EXO » « nouvelles » est trop forte périphérie nucléaire 190401 cela! carte de crédit SM émetteur EXO Avatar
Lithium hebdomadaire Nouvelles: condition de jauge de capacité de la batterie seuil récemment publiée sera réduite ou
« Supernatural », « Le Flash » était une nouvelle saison prévue avec « flèche verte » et 10 épisodes