Les paramètres en langage Go ne peuvent être transmis que par valeur
Le passage de valeur est un processus de copie
Go : passage de valeur
func bbb(list [4]int){ for i,_ := range list{ list[i] = 0 } } func main(){ list := [4]int{1,2,3,4} bbb(list) fmt.Println(list ) //[1 2 3 4] }
Javascript : Passer par référence
let list = [1,2,3,4] function bbb(list){ list.forEach((item,index)=>{ list[index] = 0 }) } bbb(list) console.log(list) //[0,0,0,0]
Mais le langage Go peut réaliser la fonction de référence passant par des pointeurs
func bbb(p2 *[4]int){ //接受一个[4]int的指针 for i,_ := range p2{ p2[i] = 0 } } func main(){ list := [4]int{1,2,3,4} p := &list bbb(p) //传递指针 fmt.Println(list ) //[0 0 0 0] }
Puisqu'il est dit que le passage de paramètres dans le langage go ne peut que être passé par valeur, voici donc en fait une copie de l'adresse du pointeur, et les deux adresses pointent vers l'adresse de la liste de variables de la fonction principale, donc la valeur de la liste change
Pour plus de connaissances connexes, veuillez prêter attention à la colonne tutoriel de langue go
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!