Introduction
Dans Go, les arguments de fonction sont transmis par valeur, ce qui pose un défi lorsqu’il s’agit d’objets. Ce guide explore le concept de valeurs de pointeur dans Go et aborde la question de savoir comment identifier la valeur de pointeur d'un objet.
Comprendre le passage de valeur
Contrairement à la croyance populaire , Go ne passe pas les structures par référence. Au lieu de cela, il transmet une copie de la structure. Cela signifie que toute modification apportée à la structure au sein de la fonction ne sera pas reflétée dans l'objet d'origine. Par exemple :
type Something struct { number int } func gotest(s *Something) { s.number = 42 } func main() { s := Something{number: 0} gotest(&s) fmt.Println(s.number) // Still 0 }
Utilisation de pointeurs pour l'identité d'objet
Pour conserver l'identité d'objet lors des appels de fonction, nous devons utiliser des pointeurs. Un pointeur est une variable qui contient l'adresse mémoire d'une autre variable ou d'un objet Go. En passant un pointeur comme argument, nous transmettons une référence à l'objet réel, permettant aux modifications apportées au sein de la fonction d'être visibles dans l'objet d'origine.
type Something struct { number int } func gotest(s *Something) { s.number = 42 } func main() { s := Something{number: 0} gotest(&s) fmt.Println(s.number) // Now 42 }
Impression des valeurs du pointeur
La fonction fmt.Printf peut être utilisée pour imprimer la valeur du pointeur d'un objet Go. Le spécificateur de format %p est utilisé pour afficher l'adresse mémoire.
fmt.Printf("Pointer Value: %p\n", &s)
ID d'objet uniques
Go ne fournit pas de moyen intégré pour obtenir un objet unique ID qui persistent dans les appels de fonction. Cependant, certaines bibliothèques tierces, telles que la bibliothèque github.com/google/uuid, peuvent être utilisées pour générer des UUID pouvant servir d'identifiants uniques.
Conclusion
Comprendre les valeurs des pointeurs est crucial pour gérer efficacement les objets dans Go. En utilisant des pointeurs, les développeurs peuvent transmettre des références d'objet et conserver l'identité de l'objet lors des appels de fonction. Bien qu'il n'existe aucun mécanisme direct pour obtenir des ID d'objet persistants, des bibliothèques tierces peuvent être utilisées pour répondre à cette exigence.
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!