Déclaration de fonction
Dans les laboratoires (LabEx) précédents, que le programme soit simple ou complexe, nous n'avons utilisé que la fonction main
pour les opérations.
Un programme ne peut avoir qu'une seule fonction main
, qui est le point d'entrée du programme. Lorsque nous exécutons le programme, les autres fonctions sont appelées et exécutées directement ou indirectement au sein de la fonction main
.
Maintenant, examinons la syntaxe des fonctions :
func functionName(parameters...)(returnValues...){
code block
}
Ici, le nom de la fonction est utilisé pour identifier la fonction. Les règles suivantes s'appliquent au nom de la fonction :
- Il peut être composé de lettres, de chiffres et de caractères de soulignement. Cependant, la première lettre du nom de la fonction ne peut pas être un chiffre. Par exemple,
func 3ab(){}
n'est pas valide.
- Lorsque la première lettre est en majuscule, la fonction peut être référencée par le code dans des packages externes. Lorsque la première lettre est en minuscule, elle ne peut être utilisée qu'au sein du package. Cela est similaire aux fonctions publiques et privées.
La liste de paramètres déclare le nombre et le type des paramètres passés à la fonction :
-
La liste de paramètres peut être vide ou contenir plusieurs paramètres.
-
Chaque paramètre est composé d'un nom de paramètre et d'un type de paramètre. Par exemple, dans la liste de paramètres ci-dessous, nous déclarons deux variables de type int
.
func test(a, b int) (res int){}
La liste des valeurs de retour est utilisée pour renvoyer les valeurs nécessaires après l'exécution de la fonction :
-
La liste des valeurs de retour est similaire à la liste de paramètres. Le nombre de paramètres peut être quelconque.
-
Généralement, la liste de retour est composée de noms de variables et de types de variables, et le nom de la variable est facultatif.
-
Si seule une variable est renvoyée et que seul le type de variable est déclaré, les parenthèses peuvent être omises. Par exemple :
func test(a int, b string) int{}
Lorsque les types de paramètres sont les mêmes, nous pouvons utiliser le mode d'écriture abrégée. Les deux fonctions ci-dessous ont la même fonctionnalité :
func test(a, b int, c, d string)(res1, res2 int, res3 string){}
// Mode d'écriture abrégée
func test(a, b int, c, d string)(res1, res2 int, res3 string){}
Remplacez le contenu du fichier func.go
par le code suivant :
package main
import "fmt"
func check(divisor int) bool {
if divisor == 0 {
fmt.Println("Le diviseur ne peut pas être égal à 0")
return false
}
return true
}
func main() {
a1, b1 := 12, 4
a2, b2 := 12, 0
// Utilisez la fonction check avant la division
if check(b1) {
fmt.Println(a1 / b1)
}
if check(b2) {
fmt.Println(a2 / b2)
}
}
Exécutez le programme à nouveau :
go run func.go
Vous devriez voir la même sortie :
3
Le diviseur ne peut pas être égal à 0
Cette fois, la logique de vérification est encapsulée dans la fonction check
, rendant le code plus propre et plus réutilisable.