La fonction appelée dans Go peut obtenir les paramètres de la fonction appelante via les paramètres de fonction. Dans Go, les paramètres peuvent être transmis aux fonctions par valeur ou référence, et la fonction peut obtenir la valeur ou le pointeur transmis par l'appelant via les paramètres. Si le paramètre est un type valeur, les opérations à l'intérieur de la fonction seront effectuées sur la copie du paramètre et n'affecteront pas la valeur d'origine transmise par l'appelant. Si le paramètre est de type pointeur, l'opération à l'intérieur de la fonction modifiera la valeur d'origine pointée par le pointeur. De cette manière, les fonctions peuvent accéder et modifier les paramètres de la fonction appelante, permettant ainsi une fonctionnalité plus flexible. Qu'il s'agisse d'un paramètre de type valeur ou de type pointeur, la fonction peut obtenir la valeur ou le pointeur transmis par l'appelant via le paramètre et effectuer les opérations associées à l'intérieur de la fonction.
Veuillez vous référer au code de référence https://go.dev/play/p/yig2b6dkcoc (également collé ici) :
Tout comme ce code - l'ordre des arguments n'est pas transmis à la fonction sort.slice(), mais il est bien imprimé dans l'appel à la méthode less() du package de tri.
Quelles sont les propriétés qui permettent cette fonctionnalité ?
package main import ( "fmt" "sort" ) func main() { order := "abcd" s := "bca" fmt.Printf("ans: %v\n", customSortString(order, s)) } func customSortString(order string, s string) string { sort.Slice([]byte(s), func(a, b int) bool { fmt.Printf("order: %v\n", order) // <------ How does this work? order is not passed to sort.Slice() function. return s[a] < s[b] }) return "" }
https://www.php.cn/link/58b7483ba899e0ce4d97ac5eecf6fa99:
Les littéraux de fonction sont des closures : ils peuvent référencer des variables définies dans la fonction environnante. Ces variables sont ensuite partagées entre les fonctions environnantes et les littéraux de fonction, et elles persistent tant qu'elles sont accessibles.
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!