Tutoriel original : https://go.dev/doc/tutorial/getting-started
Pour installer Golang il suffit d’aller sur la page principale du site go.dev Pour ma part je vais suivre le tutoriel pour installation sur mac.
On télécharge le binaire et ensuite il suffit de l’executer pour que go installe sa version sur le chemin /usr/local/go
Installation avec brew
brew install go
Ensuite pour vérifier que vous avez la bonne version faites un go version
Pour pouvoir tester le langage je souhaiterais me créer un package permettant de lancer mes différents tests. Pour cela je vais créer un package Repl dans le lequel j’aurais un main suivi de mes différents tests à lancer.
Repl/
├─ main.go
├─ test1.go
├─ test2.go
├─ testn.go
De cette façon je voulais pouvoir lancer mes différents tests sur le même main.
package main
func main() {
helloWorld()
}
main.go
package main
import "fmt"
func helloWorld() {
fmt.Println("Hello world")
}
helloworld.go
go run main.go helloworld.go
Résultat
go help
Remarque : On peut voir ici que la commande run permet de compile et de lancer un programme go.
Si on va plus loin il est possible d’avoir le détail de cette commande en faisant go help run
.
Son utilisation est la suivante :
go run [build flags] [-exec xprog] package [arguments...]
Cette commande compile et lance le Go package nommé
main
Typiquement le package est spécifié en tant que liste de fichiers .go qui sont dans un répertoire. Il est tout à fait possible d’importer les fichiers via le path système ou via un pattern matching. Exemple 1 :go run .
Exemple 2 :go run my/cmd
Essayons, changeons donc la commande go run main.go helloworld.go
par go run .
et go run repl
Ça part mal, il nous manque un fichier pour réaliser ça, pour l’instant nous allons le créer.
https://go.dev/blog/using-go-modules
go mod init repl
Maintenant les deux commandes semblent fonctionner et c’est plutôt chouette ça évite les bidouilles qu’on peut trouver avec ce genre de sujet :
https://stackoverflow.com/questions/23695448/how-to-run-all-go-files-within-current-directory-through-the-command-line-mult
Par défaut donc, cette commande va lancer le binaire compilé directement.
Ce qui est important à retenir c’est que go run .
ne génère pas les informations pour le debugger pour cela il faudra forcément passer par un build
Parfois le code que vous souhaitez faire a déjà été fait par quelqu’un d’autre. Alors il est possible de voir pour récupérer un package qui possède cette fonction que vous souhaitez avoir dans votre code.
Pour cela on peut aller sur le site pkg.go.dev
Il faut ensuite installer ce package dans notre projet, pour cela il faut juste utiliser la commande go get
rsc.io/quote/v4
Cette commande mettra également à jour votre fichier mod.go
et il créer également un fichier mod.sum
.
Ce dernier est utilisé pour authentifier le module.
https://go.dev/blog/using-go-modules
https://golangbyexample.com/go-mod-sum-module/
Maintenant il faut créer le fichier qui va afficher la “citation”
package main
import (
"fmt"
"rsc.io/quote/v4"
)
func gettingStarted() {
fmt.Println(quote.Go())
}
Et bien évidemment le rajouter dans le REPL:
package main
func main() {
helloWorld()
gettingStarted()
}
Il ne reste plus qu’à exécuter le code :
Téléchargement automatique avec “tidy”
Nous aurions pu nous passer du téléchargement du package et utiliser la commande go mod tidy
Pour montrer son fonctionnement je vais supprimer le package rsc.io/quote et laisser la commande mod tidy s’occuper du téléchargement de mon package.
Au préalable je nettoie le fichier go.mod en supprimant les requirements et je supprime le fichier go.sum
Ensuite je peux executer la commande go mod tidy
et le tour est joué