Les différences entre les fonctions Go et certaines autres langues
1. Différents formats de fonctions
func GetMsg(i int) (r string) { fmt.Println(i) r = "hi" return r }
func indique qu'il s'agit de Fonction
GetMsg est le nom de la fonction
(i int) La fonction reçoit un paramètre int
(r string) La fonction renvoie une valeur de retour de type chaîne
2. Les fonctions peuvent renvoyer plusieurs valeurs de retour
Ceci est différent de c et php, mais identique à lua
func GetMsg(i int) (r string, err string) { fmt.Println(i) r = "hi" err = "no err" return r,err }
3.
defer signifie "appelé lorsque la fonction se termine". Surtout lors de la lecture et de l'écriture de fichiers, vous devez appeler l'opération de fermeture après l'ouverture. Utilisez defer
pour l'opération de fermeture. signifie que close n'est pas appelé immédiatement après file.Open, mais file.Close() est appelé lorsque return false Cela évite efficacement le problème de fuite de mémoire en langage C.4. Difficile à comprendre : paniquer, récupérer et différer
différer : Recommandé :Introduction au go defer (fonction go delay)
Panique et Récupération, nous les considérons comme lancer et attraper dans d'autres languesL'exemple suivant :func ReadFile(filePath string)(){ file.Open(filePath) defer file.Close() if true { file.Read() } else { return false } }
ackage main import "fmt" func main() { f() fmt.Println("Returned normally from f.") } func f() { defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) } }() fmt.Println("Calling g.") g(0) fmt.Println("Returned normally from g.") } func g(i int) { if i > 3 { fmt.Println("Panicking!") panic(fmt.Sprintf("%v", i)) } defer fmt.Println("Defer in g", i) fmt.Println("Printing in g", i) g(i + 1) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!