Maison > développement back-end > Golang > Ai-je besoin de pointeurs pour accéder aux adresses de carte dans Go ?

Ai-je besoin de pointeurs pour accéder aux adresses de carte dans Go ?

Susan Sarandon
Libérer: 2024-11-16 16:02:03
original
949 Les gens l'ont consulté

Do I Need Pointers to Access Map Addresses in 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"
}
Copier après la connexion

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}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal