Maison >développement back-end >Golang >Ai-je besoin de pointeurs pour accéder aux adresses de carte dans Go ?
Comment accéder aux adresses de carte dans Go
Lorsque vous travaillez avec des cartes dans Go, il peut y avoir des cas où vous devez accéder directement à leurs adresses . Bien que vous puissiez tenter d'y parvenir à l'aide de pointeurs, il est important de comprendre que cela n'est pas nécessaire car les cartes sont des types de référence dans Go.
Pourquoi les pointeurs vers des cartes sont inutiles
Les cartes dans Go ne sont pas transmises par valeur mais plutôt par référence. Cela signifie que lorsque vous attribuez une carte à une variable, vous créez en réalité un alias pour la carte d'origine. Toute modification apportée via l'une ou l'autre variable sera reflétée dans la carte sous-jacente.
Exemple de code
Considérez l'extrait de code suivant :
package main import "fmt" func main() { valueToSomeType := map[uint8]int{1: 10, 2: 20} nameToSomeType := map[string]string{"John": "Doe", "Jane": "Smith"} fmt.Println("Original valueToSomeType:", valueToSomeType) fmt.Println("Original nameToSomeType:", nameToSomeType) // No need for pointers, as maps are passed by reference. modifyMap(valueToSomeType, nameToSomeType) } func modifyMap(val map[uint8]int, name map[string]string) { val[3] = 30 name["John"] = "Johnson" }
Dans ce code, aucun pointeur n'est utilisé pour accéder aux cartes. Cependant, la fonction modifierMap modifie toujours les cartes avec succès en raison de leur nature de référence.
Sortie
Original valueToSomeType: map[uint8]int{1:10, 2:20} Original nameToSomeType: map[string]string{John:Doe Jane:Smith} Modified valueToSomeType: map[uint8]int{1:10, 2:20, 3:30} Modified nameToSomeType: map[string]string{John:Johnson Jane:Smith}
Comme vous pouvez le constater, les cartes originales sont modifiées sans le utilisation de pointeurs.
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!