Spécification du code de langue Go détaillée de Golang

Cet article provient d'un compte public personnel: TechFlow , l'original n'est pas facile, recherchez l'attention


Aujourd'hui est la deuxième partie du sujet de Golang . Jetons un coup d'œil à la spécification du langage de Go.

Avant de poursuivre avec le contenu d'aujourd'hui, répondons à une question.

Certains étudiants m'ont demandé en arrière-plan pourquoi Golang est plus adapté au développement de systèmes distribués ? At-il des avantages par rapport à Java?

En fait, répondre à cette question implique de nombreux concepts, tels que de nombreux concepts du système d'exploitation concernant les processus, les threads, les coroutines, etc. Nous allons simplifier ces contenus et donner un exemple du fil le plus simple. Écrivons un exemple de multithreading en java :

public class MyThread implemnts Runnable {
    public void run() {
      System.out.println("I am a thread")
    }
}

public class Test {
    public static void main(String args[]) {
        MyThread thread1 = new MyThread();
        thread1.start();
    }
}

Jetons à nouveau un coup d'œil à Golang:

func run() {
    fmt.Println("I am a Thread")
}

func main() {
    go run()
}

Une telle comparaison est-elle beaucoup plus simple?

Spécification de la langue de Golang

Tout le monde sait que l'une des plus grandes différences entre les programmeurs est la ligne sur laquelle les accolades doivent être écrites , il y a une autre ligne et certains suivent la boucle. Ces deux groupes de personnes ont été divisés en deux écoles, et ils se sont battus sans fin, et ils ont également engendré de nombreux paragraphes.

Afin d'unifier le style, de nombreuses langues ont standardisé le style de code. Par exemple, Python supprime les accolades et utilise des espaces pour indenter le code. Malheureusement, certaines personnes utilisent quatre espaces pour l'indentation, et d'autres utilisent des tabulations. Les deux côtés forment un camp et se querellent ...

Peut-être que les développeurs de Golang souffraient de querelles de style de code, alors Golang a fait une chose marquante, qui a strictement limité le style de code . Tout le monde doit utiliser le même style pour forcer l'unification, sinon ils vous rendront compte chaque minute. Par conséquent, avant de procéder à un apprentissage spécifique de la grammaire, nous devons commencer par la spécification de la langue, sinon il sera très coûteux d'attendre que nous développions une mauvaise habitude et que nous voulions ensuite la corriger. En fait, corriger le style de code est une chose difficile. Pour être honnête, mon style de code n'est pas très bon. J'utilise toujours quelques variables simples telles que cur, pnt, node, u, v. C'est aussi l'habitude laissée en jouant à acm. Il serait assez difficile de le changer pendant un certain temps. Par conséquent, tout le monde doit développer de bonnes habitudes au début, et me laisser les mauvaises habitudes (brouillard).

spécification du package

Il existe de nombreuses spécifications linguistiques à Golang, et elles couvrent un large éventail d'aspects. Certains d'entre eux sont temporairement indisponibles. Prenons d'abord les bases. La première est la spécification du package . Pour un package, son nom doit être cohérent avec le répertoire. Prenez un nom de package significatif et n'utilisez pas de noms que les autres ne comprennent pas. Tels que le test et l'unité, et ne peuvent pas entrer en conflit avec la bibliothèque standard.

La seconde est que lorsque nous citons des paquets, nous devons faire attention à ne pas utiliser de chemins relatifs , mais à utiliser des chemins absolus.

// wrong
import "../../../repo"

// correct
import "github.com/repo/package

Bien sûr, nous pouvons installer un outil goimport pour nous aider à importer automatiquement les packages. Cependant, l'introduction automatique de packages aura également des lacunes, en particulier lorsqu'il y a deux packages avec le même nom dans le répertoire, des erreurs peuvent être introduites, ce qui nécessite notre propre attention.

Spécifications de style de code

Le langage Go stipule que nous devons utiliser la norme hump pour nommer les variables, pas _. Dans Go, la première lettre met en majuscule la variable dans la structure ou la fonction public dans le package. Si elle est en minuscule, cela signifie privée , ce qui nécessite une attention particulière. Quand j'ai commencé à écrire go, je n'y étais pas très habitué, donc marcher sur une fosse est courant.

Il y a des constantes dans golang. Les constantes dans golang utilisent la norme de cas de chameau avec la première lettre en majuscule . Par exemple, si nous démarrons une constante appelée app_env, ce qui signifie l'environnement actuel de l'application, nous devons la définir comme ceci:

const AppEnv = "env"

Un autre point est que les concepteurs de Golang pensaient que l'ajout d'un point-virgule à la fin de la ligne n'était pas nécessaire , de sorte que le compilateur a ajouté la fonction d'ajout automatique d'un point-virgule à la fin de la ligne. On peut donc ajouter ou non, mais cela est généralement considéré comme inutile. Donc, d'une manière générale, sauf dans le corps de la boucle ou les conditions de jugement, nous n'écrivons généralement pas de points-virgules. Bien sûr, il existe des cas particuliers, comme lorsque vous souhaitez écrire plusieurs instructions sur une seule ligne:

var a int; var b float;
a = 3; b = 3.2;

Bien sûr, il n'est généralement pas recommandé de le faire , il est recommandé de diviser en plusieurs lignes, plus belles.

Un autre point est que toutes les variables et packages dans golang doivent être utilisés . Il n'est pas autorisé de définir des choses qui ne sont pas utilisées, sinon il signalera également une erreur. En d'autres termes, cela limite strictement notre prudence lors de l'écriture de code. Vous ne pouvez pas appliquer les variables inutilisées à volonté. La plupart des langues n'ont pas de telles restrictions, mais golang a des restrictions, nous devons donc être prudents lors de l'écriture de code.

Un autre point concerne les accolades. Dans golang, les accolades sont strictement interdites d'écriture sur la ligne actuelle , plutôt que sur une nouvelle ligne.

// wrong
if expression 
{
  ...
}

// correct
if expression {
  ...
}

Dans l'exemple ci-dessus, nous pouvons également remarquer que la condition derrière if in golang n'est pas placée entre parenthèses , ce qui est le même que Python. Mais si vous avez l'habitude d'écrire en Java ou en C ++, vous ne serez peut-être pas à l'aise au début.

Le dernier point est que l'outil de détection de spécification de code de golang golint stipule que toutes les fonctions et les en-têtes de structure doivent être commentés , et la spécification des commentaires est également restreinte. La spécification du commentaire est le nom plus la description . S'il n'est pas écrit ou n'est pas standardisé, le code peut s'exécuter, mais il ne peut pas passer la détection de spécification golint. De manière générale, l'environnement de développement de l'entreprise sera limité, et seul le code qui passe la spécification golint peut être soumis pour publication.

// HelloWorld print hello world
func HelloWorld() {
    fmt.Println("Hello World")
}

Un autre point est que golang ne prend pas en charge les conversions de types implicites , telles que int et int32 et int64, qui seront traitées comme des types différents. Si nous affectons une variable int32 au type int, cela provoquera une erreur et devra être converti manuellement. Cela augmente bien sûr le travail lors du codage, mais évite également de nombreux problèmes causés par la différence de précision.

En plus de cela, golang définit également la spécification de la définition de la structure et du traitement des erreurs. Mais pour nos débutants, ceux-ci doivent être compris à l'heure actuelle, et d'autres contenus peuvent nous être familiers lorsque nous nous rencontrerons plus tard.

Un langage qui a des restrictions de code strictes sur le style de code peut être une douleur pour les débutants , car plus de choses à retenir, nous devons non seulement apprendre la grammaire, mais aussi comprendre ces spécifications. Mais lorsque nous serons familiers ou travaillerons, nous constaterons que c'est en fait une bonne chose. Pour un scénario de collaboration multi-personnes, tout le monde respecte les mêmes spécifications améliorera considérablement l'efficacité de l'échange de code et de la collaboration . Si vous avez vu les codes d'autres personnes dont le style de code est complètement différent du vôtre, je pense que vous en aurez une meilleure compréhension.

Résumé

De la rigueur de la spécification et du degré de castration orienté objet , le golang n'est pas comme une nouvelle langue, mais le style de la langue de la vieille école du siècle dernier. Mais Golang a de nombreuses nouvelles fonctionnalités, telles que permettre aux valeurs de fonction de renvoyer plusieurs résultats , prendre en charge les fonctions anonymes et certaines fonctions de programmation fonctionnelle, etc. Au stade débutant, j'ai également beaucoup résisté, probablement parce que Python est trop écrit et habitué aux langages dynamiques. Mais avec l'approfondissement de ma compréhension de ce langage, j'ai découvert de plus en plus la pensée et la sagesse derrière ses concepts de conception, et je l'ai lentement amélioré. Aujourd'hui, je ne doute plus qu'il soit excellent. Langue, la popularité de ces années n'est pas déraisonnable.

Un autre point important est que, parce que le golang est si unique, il me fait souvent réfléchir à l'intention derrière cela. Ce type de réflexion, associé à la consultation de certaines informations, peut trouver de nombreux angles morts dans la réflexion précédente. Quand j'étudiais la langue auparavant, je ne pensais jamais à la raison pour laquelle le concepteur de langue devrait concevoir comme ça, je n'apprendrais le contenu pertinent qu'en fonction des gourdes. En plus d'améliorer la compréhension de la langue elle-même, une telle réflexion peut également améliorer la réflexion et la compréhension de la scène du problème . Pour l'ingénieur, cette dernière est en fait plus importante.

Bien sûr, je peux dire que ces contenus sont inutiles et que vous devez les expérimenter attentivement devant l'écran.

J'espère que tout le monde peut ressentir le charme du golang et qu'il pourra grandir et applaudir pendant ce processus! Si vous sentez quelque chose de récompensé, veuillez le lire ou le republier . Vos efforts sont très importants pour moi.

Insérez la description de l'image ici

Publié 117 articles originaux · J'aime 61 · Visites 10 000+

Je suppose que tu aimes

Origine blog.csdn.net/TechFlow/article/details/105643808
conseillé
Classement