Regardez d'abord la porte : quelle est la structure d'un programme Go ?

Écrivez et exécutez votre premier programme Go


Tout d'abord, nous devons créer un fichier source appelé main.go.

Ici, je dois vous parler des conventions de nommage Go. Les fichiers source Go sont toujours nommés avec des mots courts en minuscules et se terminent par l'extension .go.

Si vous souhaitez utiliser plusieurs mots dans le nom du fichier source, nous concaténons généralement les plusieurs mots directement en tant que nom de fichier source au lieu d'utiliser d'autres séparateurs tels que des traits de soulignement. Autrement dit, nous utilisons généralement helloworld.go comme nom de fichier au lieu de hello_world.go.

En effet, le séparateur de soulignement a un rôle particulier dans la dénomination des fichiers source Go, que nous expliquerons en détail dans les explications futures. En général, nous essayons de ne pas utiliser plus de deux combinaisons de mots pour les noms de fichiers, sinon il sera difficile de les différencier.

Maintenant, vous pouvez ouvrir le fichier main.go que vous venez de créer et saisir le code suivant :

package main

import "fmt"

func main() {
    fmt.Println("hello, world")
}

Après avoir écrit, nous sauvegardons le fichier et revenons à la fenêtre du terminal, puis sur un système Linux ou macOS, vous pouvez compiler et exécuter le fichier en tapant cette commande :

$go build main.go
$./main
hello, world

S'il s'agit d'un système Windows, vous devez remplacer ./main dans la commande ci-dessus par .\main.exe.

Cependant, quel que soit le système d'exploitation que vous utilisez, vous devriez voir la chaîne "hello, world" imprimée dans le terminal à ce stade. Si vous ne voyez pas cette sortie, soit il y a un problème avec le processus d'installation de Go, soit il y a un problème avec l'édition du fichier source, et vous devez revérifier. Si tout se passe bien, alors félicitations ! Vous avez terminé votre premier programme Go et êtes officiellement un développeur Go ! Bienvenue dans le monde du langage Go ! 

Structure de l'exemple de programme "hello, world"


Maintenant, revenons en arrière et examinons de plus près ce qui se passe dans l'exemple de programme "hello, world". La première partie notable est celle-ci :

package main

Cette ligne de code définit un package dans Go. Un package est l'unité de base du langage Go, généralement nommé avec un seul mot en minuscule. Un programme Go est essentiellement une collection de packages. Tout le code Go a son propre package , ici tout le code de notre exemple "hello, world" est dans un package appelé main. Le package principal est un package spécial dans Go, et un seul package nommé main est autorisé dans l'ensemble du programme Go.

Le code principal du package principal est une fonction appelée main :

func main() {
    fmt.Println("hello, world")
}

La fonction principale ici est spéciale : lorsque vous exécutez un programme Go exécutable, tout le code commencera à s'exécuter à partir de cette fonction d'entrée. La première ligne de ce code déclare une fonction nommée main sans paramètres ni valeur de retour. Si vous devez un jour déclarer des paramètres à une fonction, vous devez les mettre entre parenthèses ().

De plus, la paire d'accolades {} est utilisée pour marquer le corps de la fonction, et Go exige que tous les corps de fonction soient entourés d'accolades. Par convention, nous recommandons de placer l'accolade ouvrante sur la même ligne que la déclaration de la fonction, séparée par des espaces . Le langage Go a un ensemble intégré de styles de code communément appelés conventions de la communauté Go, et un outil appelé Gofmt est fourni avec le package d'installation, qui peut vous aider à formater automatiquement le code dans le style convenu. 

Ok, revenons au sujet, regardons le code dans le corps de la fonction principale :

fmt.Println("hello, world")

Cette ligne de code a fait tout le travail de l'ensemble du programme d'exemple : envoyer la chaîne à la sortie standard (stdout) du terminal. Mais voici quelques détails supplémentaires auxquels vous devez faire attention.

Remarque 1 : Le style de code Go standard utilise des tabulations au lieu d'espaces pour l'indentation . Bien entendu, la mise en forme de ce style de code peut également être effectuée par gofmt.

Remarque 2 : Nous appelons une fonction appelée Println, qui se trouve dans le package fmt de la bibliothèque standard Go. Pour utiliser la fonction Println définie par le package fmt dans notre exemple de programme, nous procédons en fait en deux étapes.

La première étape consiste à importer le chemin du package fmt via l'instruction import au début du fichier source :

import "fmt"

La deuxième étape consiste à appeler la fonction Println via l'identificateur qualifié fmt dans le corps de la fonction principale. Bien que le "fmt" littéral soit utilisé aux deux endroits, la signification du "fmt" littéral est différente à ces deux endroits :

  • "fmt" dans la ligne d'import "fmt" représente le chemin d'importation (Import) du package, qui représente le répertoire fmt sous la bibliothèque standard , et la signification de l'intégralité de l'instruction d'importation est d'importer le package sous le répertoire fmt de la bibliothèque standard ;
  • Le "fmt" dans la ligne d'appel de fonction fmt.Println représente le nom du package. 

Habituellement, le nom du dernier segment du chemin d'importation est le même que le nom du package, ce qui est également facile à comprendre car le "fmt" dans l'instruction d'importation fait référence au nom du package, ce qui n'est pas le cas.

La dernière raison pour laquelle le corps de la fonction principale peut appeler la fonction Println du package fmt est que la première lettre du nom de la fonction Println est en majuscule. En langage Go, seul un identifiant avec une lettre majuscule est exporté (Exported) et visible par code hors du package ; si la première lettre est en minuscule, cela signifie que l'identifiant est limité au package dans lequel il est déclaré. visible. 

Note 3 : Revenons à l'implémentation du corps de la fonction principale et concentrons-nous sur la chaîne "hello, world" transmise à la fonction Println. Vous constaterez que la chaîne que nous avons transmise est la chaîne que nous voyons sur la sortie standard du terminal après avoir exécuté le programme.

Ce "ce que vous voyez est ce que vous obtenez" bénéficie du fait que le fichier source Go lui-même utilise le jeu de caractères Unicode et utilise la méthode de codage de caractères standard UTF-8 , qui est cohérente avec le jeu de caractères utilisé par l'environnement dans lequel le programme compilé s'exécute. Il est cohérent avec la méthode d'encodage des caractères. 

Ici, même si nous remplaçons "hello, world" dans le code par la chaîne chinoise "Hello, world", comme ceci :

package main

import "fmt"

func main() {
    fmt.Println("你好,世界")
}

Nous pouvons toujours voir la sortie correcte sur la sortie standard du terminal.

Enfin, je ne sais pas si vous avez remarqué que dans le code source de tout notre exemple de programme, nous n'avons jamais utilisé de point-virgule pour marquer la fin d'une instruction, ce qui semble différent de ces langages compilés traditionnels tels que C, C++ et Java ?

Cependant, en fait, la spécification formelle de grammaire du langage Go utilise un point-virgule ";" comme identifiant de fin. Alors pourquoi utilisons-nous et voyons-nous rarement des points-virgules dans le code Go ? En effet, la plupart des points-virgules sont facultatifs et sont souvent omis, mais le compilateur Go insère automatiquement ces points-virgules omis lors de la compilation du code source.

Après avoir analysé la structure de ce code, parlons de la compilation du langage Go. Bien que vous ayez dû exécuter l'exemple de programme "hello, world" tout à l'heure, dans ce processus, il y a une étape importante - la compilation, maintenant je vais vous montrer comment le programme en langage Go est compilé.

Guess you like

Origin blog.csdn.net/qq_34556414/article/details/123535600