En Go, une application est organisée en packages. Un package est un ensemble de fichiers sources situés dans le même dossier. Tous les fichiers sources d'un dossier doivent avoir le même nom de package en haut du fichier. Par convention, on donne aux packages le nom du dossier dans lequel ils se trouvent.
package greeting
Go fournit une vaste bibliothèque standard de packages que l'on peut utiliser dans son programme grâce au mot-clé import.
Les packages de la bibliothèque standard s'importent par leur nom.
package greeting
import "fmt"
Un package importé s'utilise ensuite par son nom :
world := "World"
fmt.Sprintf("Hello %s", world)
Go détermine si un élément peut être appelé par du code d'autres packages à la façon dont il est déclaré. Pour rendre une fonction, un type, une variable, une constante ou un champ de structure visible depuis l'extérieur (on dit alors qu'il est exporté), le nom doit commencer par une majuscule.
package greeting
// Hello is a public function (callable from other packages).
func Hello(name string) string {
return "Hello " + name
}
// hello is a private function (not callable from other packages).
func hello(name string) string {
return "Hello " + name
}
Go fournit un package intégré appelé fmt (package de formatage) qui propose une variété de fonctions pour manipuler le format des entrées et des sorties.
La fonction la plus couramment utilisée est Sprintf, qui utilise des verbes comme %s pour interpoler des valeurs dans une string et renvoie cette string.
import "fmt"
food := "taco"
fmt.Sprintf("Bring me a %s", food)
// Returns: Bring me a taco
En Go, les nombres à virgule flottante se formatent facilement avec les verbes de Sprintf : %g (représentation compacte), %e (exposant) ou %f (sans exposant).
Ces trois verbes permettent de contrôler la largeur du champ et la position numérique.
import "fmt"
number := 4.3242
fmt.Sprintf("%.2f", number)
// Returns: 4.32
Tu trouveras la liste complète des verbes disponibles dans la documentation du package de formatage.
fmt contient d'autres fonctions pour travailler avec les strings, comme Println, qui se contente d'afficher dans la console les arguments qu'elle reçoit, et Printf, qui met en forme l'entrée de la même façon que Sprintf avant de l'afficher.
Il était une fois un programmeur excentrique qui vivait dans une étrange maison aux fenêtres à barreaux. Un jour, il a accepté un contrat proposé par un site d'offres d'emploi en ligne pour construire un robot de fête. Le robot est censé accueillir les gens et les aider à rejoindre leur place. La première édition était très technique et montrait le manque d'interaction humaine du programmeur. Certains de ces défauts se sont d'ailleurs retrouvés dans l'édition suivante.
Implémente la fonction Welcome pour renvoyer un message de bienvenue à partir du nom donné :
Welcome("Christiane")
// => Welcome to my party, Christiane!
Implémente la fonction HappyBirthday pour renvoyer un message d'anniversaire à partir du nom et de l'âge de la personne.
Malheureusement, le programmeur est un peu frimeur, alors le robot doit démontrer qu'il connaît l'anniversaire de chaque invité.
HappyBirthday("Frank", 58)
// => Happy birthday Frank! You are now 58 years old!
Implémente la fonction AssignTable pour indiquer le chemin.
Elle prend 5 paramètres.
string)int)string)string)float64)Le format exact du résultat est visible dans l'exemple ci-dessous.
Le robot indique le numéro de table sur 3 chiffres. Si le nombre compte moins de 3 chiffres, on lui ajoute des zéros devant pour atteindre 3 chiffres (par exemple 3 devient 003). Le robot indique aussi la distance de la table. Heureusement, avec une précision limitée à 1 chiffre.
AssignTable("Christiane", 27, "Frank", "on the left", 23.7834298)
// =>
// Welcome to my party, Christiane!
// You have been assigned to table 027. Your table is on the left, exactly 23.8 meters from here.
// You will be sitting next to Frank.
Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts165 exercices, et un vrai mentorat humain, le tout gratuitement.