Parfois, lorsque je regarde le code Go d'autres personnes, je constate que certains d'entre eux utilisent des pointeurs dans le code et d'autres non.
Supposons qu'il existe un type de structure appelé Person, et que l'on constate que certaines méthodes utilisent func methodA (*person Person) comme paramètre, ou utilisent func *(person Person) methodA() comme paramètre. la propre méthode de la structure, c'est-à-dire la structure de la personne (apprentissage recommandé : go)
peut appeler directement la méthodeA, mais utilise un pointeur.
Ou vous pouvez voir l'utilisation de var personMap map[string]*Person dans la structure de la carte
Si vous transférez de Java vers Golang, cela peut ne pas être facile comprendre. Parce qu'il n'y a pas de pointeurs dans le monde Java, vous pouvez simplement le transmettre directement et l'utiliser. Cependant, vous devez faire attention à beaucoup de choses lorsque vous allez sur Golang.
Alors quand faut-il l'utiliser ? Pourquoi est-ce nécessaire dans certains endroits ?
Si vous n'utilisez pas de pointeurs, dans certains cas, il est impossible d'attribuer des valeurs à la structure
Regardons un morceau de code . Ce code n'utilise aucun pointeur. , définissez d'abord un tas d'objets à tester
type Person struct { //person结构体,包含年龄,名称,车 age int name string car Car } type Car struct { //person名下的车 name string //车的名字 } var personMap map[string]Person //一个存放person的map func setName(person Person, name string) { //给参数person设置名字 person.name = name } func (person Person) setName(name string) { //设置名字 person.name = name } func printName(person Person){ //打印person的名字 fmt.Println(person.name) } func (person Person)printName(){ //结构体person自己支持打印名字 fmt.Println(person.name) }
Nous pouvons donc conclure que lorsque nous devons modifier le contenu variable de la structure, la structure. les paramètres variables transmis par la méthode doivent être utilisés Pointeur, c'est-à-dire l'adresse de la structure
Lorsque vous devez modifier les variables de la structure dans la carte, vous avez également besoin pour utiliser l'adresse de la structure comme valeur de la carte
Si vous venez de lire la variable de structure, vous pouvez passer la référence directement sans utiliser de pointeur
*type La variable de type. ici stocke l'adresse. Cela doit être clair. Vous devez utiliser &type pour obtenir l'adresse.
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!