Comment écrire votre premier programme en Go

introduction

Le programme «Hello, World!» Est une tradition classique et consacrée de la programmation informatique. C’est un premier programme simple et complet pour les débutants, et un bon moyen de s’assurer que votre environnement est correctement configuré.

Ce tutoriel vous guidera à travers la création de ce programme dans Go. Toutefois, pour rendre le programme plus intéressant, vous allez modifier le programme traditionnel «Hello, World!» Afin qu’il demande à l’utilisateur son nom. Vous utiliserez ensuite le nom dans le message d'accueil. Lorsque vous aurez terminé le didacticiel, vous aurez un programme qui ressemblera à ceci lorsque vous l'exécuterez:

OutputPlease enter your name.
Sammy
Hello, Sammy! I'm Go!

Conditions préalables

Avant de commencer ce didacticiel, vous aurez besoin d'unlocal Go development environment configuré sur votre ordinateur. Vous pouvez le configurer en suivant l'un de ces tutoriels:

[[step-1 -—- writing-the-basic- "hello-world -" - program]] == Étape 1 - Ecrire le Basic "Hello, World!" Programme

Pour écrire le "Hello, World!" programme, ouvrez un éditeur de texte en ligne de commande tel quenano et créez un nouveau fichier:

nano hello.go

Une fois le fichier texte ouvert dans la fenêtre du terminal, vous tapez votre programme:

hello.go

package main

import "fmt"

func main() {
  fmt.Println("Hello, World!")
}

Décomposons les différents composants du code.

package est un Gokeyword qui définit à quel groupe de code appartient ce fichier. Il ne peut y avoir qu'un seul package par dossier, et chaque fichier.go doit déclarer le même nom de package en haut de son fichier. Dans cet exemple, le code appartient au packagemain.

import est un Gokeyword qui indique au compilateur Go les autres packages que vous souhaitez utiliser dans ce fichier. Ici, vous importez le packagefmt fourni avec la bibliothèque standard. Le packagefmt fournit des fonctions de formatage et d'impression qui peuvent être utiles lors du développement.

fmt.Println est un Gofunction, trouvé dans le packagefmt, qui indique à l'ordinateur d'imprimer du texte à l'écran.

Vous suivez la fonctionfmt.Println par une séquence de caractères, comme"Hello, World!", entre guillemets. Tous les caractères entre guillemets sont appelésstring. La fonctionfmt.Println imprimera cette chaîne à l'écran lorsque le programme s'exécutera.

Enregistrez et quitteznano en tapantCTRL + X, lorsque vous êtes invité à enregistrer le fichier, appuyez surY.

Maintenant, vous pouvez essayer votre programme.

[[step-2 -—- running-a-go-program]] == Étape 2 - Exécution d'un programme Go

Avec votre programme «Hello, World!» Écrit, vous êtes prêt à exécuter le programme. Vous utiliserez la commandego, suivie du nom du fichier que vous venez de créer.

go run hello.go

Le programme s'exécutera et affichera cette sortie:

OutputHello, World!

Voyons ce qui s’est réellement passé.

Les programmes Go doivent compiler avant d’être exécutés. Lorsque vous appelezgo run avec le nom d'un fichier, dans ce cashello.go, la commandego feracompile l'application puis exécutera le binaire résultant. Pour les programmes écrits dans les langages de programmationcompiled, un compilateur prendra le code source d'un programme et générera un autre type de code de niveau inférieur (tel que le code machine) pour produire un programme exécutable.

Les applications Go nécessitent un packagemain et exactement la fonctiononemain() qui sert de point d'entrée pour l'application. La fonctionmain ne prend aucun argument et ne renvoie aucune valeur. Au lieu de cela, il indique au compilateur Go que le package doit être compilé en tant que package exécutable.

Une fois compilé, le code s'exécute en entrant la fonctionmain() dans le packagemain. Il exécute la lignefmt.Println("Hello, World!") parcalling la fonctionfmt.Println. La valeur de chaîne deHello, World! est alorspassed pour la fonction. Dans cet exemple, la chaîneHello, World! est également appeléeargument car il s'agit d'une valeur transmise à une méthode.

Les guillemets qui se trouvent de chaque côté deHello, World! ne sont pas imprimés à l'écran car vous les utilisez pour indiquer à Go le début et la fin de votre chaîne.

Au cours de cette étape, vous avez créé un programme de travail «Hello, World!» Avec Go. Dans l'étape suivante, vous allez explorer comment rendre le programme plus interactif.

[[step-3 -—- prompting-for-user-input]] == Étape 3 - Demande de saisie utilisateur

Chaque fois que vous exécutez votre programme, il produit le même résultat. Dans cette étape, vous pouvez ajouter à votre programme pour demander à l'utilisateur son nom. Vous utiliserez ensuite leur nom dans la sortie.

Au lieu de modifier votre programme existant, créez un nouveau programme appelégreeting.go avec l'éditeurnano:

nano greeting.go

Tout d'abord, ajoutez ce code, qui invite l'utilisateur à entrer son nom:

greeting.go

package main

import (
    "fmt"
)

func main() {
  fmt.Println("Please enter your name.")
}

Une fois de plus, vous utilisez la fonctionfmt.Println pour imprimer du texte à l'écran.

Ajoutez maintenant la ligne en surbrillance pour stocker les entrées de l’utilisateur:

greeting.go

package main

import (
    "fmt"
)

func main() {
  fmt.Println("Please enter your name.")
  var name string
}

La lignevar name string créera une nouvelle variable en utilisant lesvarkeyword. Vous nommez la variablename, et elle sera de typestring.

Ajoutez ensuite la ligne en surbrillance pour capturer la saisie de l’utilisateur:

greeting.go

package main

import (
    "fmt"
)

func main() {
  fmt.Println("Please enter your name.")
  var name string
  fmt.Scanln(&name)
}

La méthodefmt.Scanln indique à l'ordinateur d'attendre une entrée du clavier se terminant par une nouvelle ligne ou un caractère ( ). Cela met le programme en pause, permettant à l'utilisateur de saisir le texte de son choix. Le programme continuera lorsque l'utilisateur appuiera sur la toucheENTER de son clavier. Toutes les frappes, y compris la toucheENTER, sont ensuite capturées et converties en une chaîne de caractères.

Vous voulez utiliser ces caractères dans la sortie de votre programme, donc vous enregistrez ces caractères parwriting eux dans la chaînevariable appeléename. Go stocke cette chaîne dans la mémoire de votre ordinateur jusqu'à la fin du programme.

Enfin, ajoutez la ligne en surbrillance suivante dans votre programme pour imprimer le résultat:

greeting.go

package main

import (
    "fmt"
)

func main() {
  fmt.Println("Please enter your name.")
  var name string
  fmt.Scanln(&name)
  fmt.Printf("Hi, %s! I'm Go!", name)
}

Cette fois, au lieu d'utiliser à nouveau la méthodefmt.Println, vous utilisezfmt.Printf. La fonctionfmt.Printf prend une chaîne, et en utilisant l'impression spécialeverbs, (%s), elle injecte la valeur dename dans la chaîne. Vous faites cela parce que Go ne prend pas en chargestring interpolation, ce qui vous permettrait de prendre la valeur attribuée à une variable et de la placer dans une chaîne.

Enregistrez et quitteznano en appuyant surCTRL + X, puis appuyez surY lorsque vous êtes invité à enregistrer le fichier.

Maintenant, lancez le programme. Vous serez invité à entrer votre nom, alors entrez-le et appuyez surENTER. La sortie peut ne pas être exactement celle que vous attendez:

OutputPlease enter your name.
Sammy
Hi, Sammy
! I'm Go!

Au lieu deHi, Sammy! I'm Go!, il y a un saut de ligne juste après le nom.

Le programme a capturéall de nos frappes, y compris la toucheENTER sur laquelle nous avons appuyé pour dire au programme de continuer. Dans une chaîne, appuyer sur la toucheENTER crée un caractère spécial qui crée une nouvelle ligne. La sortie du programme fait exactement ce que vous lui avez demandé de faire; il affiche le texte que vous avez entré, y compris cette nouvelle ligne. Ce n'est pas ce à quoi vous vous attendiez, mais vous pouvez le corriger avec des fonctions supplémentaires.

Ouvrez le fichiergreeting.go dans votre éditeur:

nano greeting.go

Localisez cette ligne dans votre programme:

greeting.go

...
fmt.Scanln(&name)
...

Ajoutez la ligne suivante juste après:

greeting.go

name = strings.TrimSpace(name)

Cela utilise la fonctionTrimSpace, du package de la bibliothèque standard de Gostrings, sur la chaîne que vous avez capturée avecfmt.Scanln. La fonctionstrings.TrimSpace supprime tous les caractères d'espace, y compris les nouvelles lignes, du début et de la fin d'une chaîne. Dans ce cas, il supprime le caractère de nouvelle ligne à la fin de la chaîne créée lorsque vous avez appuyé surENTER.

Pour utiliser le packagestrings, vous devez l'importer en haut du programme.

Localisez ces lignes dans votre programme:

greeting.go

import (
    "fmt"
)

Ajoutez la ligne suivante pour importer le packagestrings:

greeting.go

import (
    "fmt"
  "strings"
)

Votre programme va maintenant contenir les éléments suivants:

greeting.go

package main

import (
        "fmt"
        "strings"
)

func main() {
    fmt.Println("Please enter your name.")
    var name string
    fmt.Scanln(&name)
    fmt.Printf("Hi, %s! I'm Go!", name)
    name = strings.TrimSpace(name)
}

Enregistrez et quitteznano. Appuyez surCTRL + X, puis surY lorsque vous êtes invité à enregistrer le fichier.

Exécutez le programme à nouveau:

go run greeting.go

Cette fois, après avoir entré votre nom et appuyé surENTER, vous obtenez la sortie attendue:

OutputPlease enter your name.
Sammy
Hi, Sammy! I'm Go!

Vous avez maintenant un programme Go qui prend les entrées d’un utilisateur et les affiche à l’écran.

Conclusion

Dans ce tutoriel, vous avez écrit un programme «Hello, World!» Qui prend les entrées d’un utilisateur, traite les résultats et affiche le résultat. Maintenant que vous disposez d’un programme de base, essayez d’élargir votre programme. Par exemple, demandez la couleur préférée de l’utilisateur et demandez au programme de dire que sa couleur préférée est le rouge. Vous pourriez même essayer d'utiliser cette même technique pour créer un programme simple Mad-Lib.