Maison > Article > développement back-end > Comment transmettre les paramètres de la fonction Golang
Il existe trois façons de transmettre des paramètres de fonction dans Go : par valeur, par référence et par pointeur. La valeur par défaut est de passer par valeur, la transmission par référence doit utiliser le type de pointeur, la transmission par pointeur passe directement le pointeur. Lorsque vous devez modifier des variables externes ou partager des données efficacement, utilisez respectivement le passage par référence ou par pointeur.
Comment transmettre les paramètres de la fonction Go
Les paramètres de la fonction Go peuvent être transmis par valeur, référence ou pointeur. Choisir la bonne méthode de transmission est essentiel pour garantir que votre fonction fonctionne correctement et éviter les allocations de mémoire inutiles.
Pass by value
Cette méthode de transmission transmet une copie des paramètres de la fonction à la fonction. Toute modification apportée à la copie n'affectera pas la variable d'origine. C'est le mode de livraison par défaut.
Exemple :
func changeValue(x int) { x++ } func main() { a := 5 changeValue(a) fmt.Println(a) // 输出:5 }
Pass by reference
Pass by référence utilise l'adresse du paramètre, pas une copie. Par conséquent, toute modification apportée aux paramètres affectera les variables d’origine. Pour transmettre des paramètres par référence, vous devez utiliser des types pointeurs (*).
Par exemple :
func changeRef(x *int) { *x++ } func main() { a := 5 changeRef(&a) fmt.Println(a) // 输出:6 }
Pass by pointer
Pass by pointer est similaire au pass by référence, mais il transmet directement le pointeur lui-même au lieu de l'adresse. Cette méthode de transmission permet de partager efficacement les données entre les fonctions car elle évite l'allocation de mémoire.
Par exemple :
type Node struct { value int next *Node } func changePtr(node *Node) { node.value++ } func main() { root := &Node{5, nil} changePtr(root) fmt.Println(root.value) // 输出:6 }
Cas pratique :
Considérons une fonction qui gère les entrées et sorties de fichiers, qui prend le chemin du fichier et le contenu du fichier comme paramètres. Passer le chemin du fichier par référence évite la surcharge liée à la création d'une nouvelle copie.
func processFile(path string, contents []byte) { // 处理文件 path 和内容 contents } func main() { path := "myfile.txt" contents := readFile() processFile(path, contents) // 后续处理 }
Quelle méthode de passage choisir
Quelle méthode de passage choisir dépend de l'objectif et des exigences de performance de la fonction :
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!