Maison >développement back-end >Golang >Comment imprimer correctement l'adresse d'une structure en Go ?

Comment imprimer correctement l'adresse d'une structure en Go ?

DDD
DDDoriginal
2024-11-29 12:38:12277parcourir

How to Correctly Print the Address of a Struct in Go?

Comprendre l'impression d'adresses de structure dans Go

Dans Go, comprendre le concept d'impression de l'adresse d'une variable de structure est crucial. Examinons une requête spécifique et sa solution.

Requête :

Un utilisateur rencontrant Go pour la première fois souhaite imprimer l'adresse d'une variable de structure, r. Malgré l'utilisation de l'opérateur & attendu, la sortie affiche {15 6} au lieu de l'adresse attendue.

Extrait de code :

type Rect struct {
  width int
  name int
}

func main() {
  r := Rect{4, 6}
  p := &r
  p.width = 15

  fmt.Println("-----", &p, r, p, &r)
}

Analyse :

Par défaut, fmt.Println() utilise le format %v qui traite spécialement les structures en imprimant leurs champs. Pour imprimer l'adresse directement, une chaîne de format spécifique est requise.

Solution :

Pour imprimer l'adresse de r, le verbe %p doit être utilisé avec un format chaîne. Ce verbe indique spécifiquement l'impression d'une valeur de pointeur.

fmt.Printf("%p\n", &r)

Cela affichera correctement l'adresse de r, telle que 0x414020.

De plus, l'adresse peut être stockée dans une variable en utilisant la syntaxe suivante :

addr := &r

Maintenant, addr maintiendra le pointeur sur r.

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!

Déclaration:
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