Leçons du module (1/5)
Signature et paramètres
En Go, les fonctions sont déclarées avec func. La syntaxe de signature diffère
depuis C/Java : le type suit le nom du paramètre, séparé par un
l'espace. C'est un choix qui se lit mieux à haute voix — "n de type int" à la place
de "int n".
Syntaxe de base
func sum(a int, b int) int {
return a + b
}
func greet(name string) {
fmt.Println("ciao", name)
}Une fonction sans valeur de retour omet simplement le type de retour.
Paramètres consécutifs du même type
Si plusieurs paramètres consécutifs partagent le même type, vous pouvez déclarer juste une fois sur le dernier. C'est idiomatique et vous le verrez partout :
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }Fonctions exportées et non exportées
Dans Go, la visibilité est déterminée par le nom : identifiants qui commencent avec une lettre majuscule sont exportés (visibles depuis d'autres packages), les autres sont privés du package.
func Sum(a, b int) int { ... } // esportata
func helper() { ... } // privata al packageFonctions comme valeurs
Les fonctions sont des valeurs de première classe : vous pouvez les attribuer, les transmettre et retournez-les. Nous approfondirons la leçon sur les fermetures.
op := sum // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5main et init : deux noms spéciaux
func main()est le point d'entrée du packagemain. Pas d'arguments, aucune valeur de retour.func init()est appelé automatiquement au démarrage du package (même plusieurs fois si plusieurs fichiers en définissent un). Utile pour la configuration ; utilisez-le avec parcimonie.
Essayez-le
Définissez une fonction sum(a, b int) int qui renvoie a+b, puis appelez-la dans main avec (3, 4).
Afficher l'indice
Type partagé : `(a, b int)`. Le type de retour va APRÈS les parenthèses.
Solution disponible après 3 tentatives
Définissez greet(name string) (pas de valeur de retour) qui imprime 'ciao <name>'.
Afficher l'indice
Aucun type de retour si la fonction ne renvoie rien.
Solution disponible après 3 tentatives
Où va le type de paramètre dans Go ?
func f(? ?) {}Récapitulatif
func name(param type, ...) returnType { ... }.- Tapez après le nom ; paramètres consécutifs du même type → déclarez-le une seule fois.
- Initiale majuscule = exporté ; minuscule = privé pour le package.
- Les fonctions sont de première classe (assignables, passables).
mainetinitsont des noms réservés avec une sémantique particulière.