Maison >développement back-end >Golang >Comment accéder et stocker l'adresse mémoire d'une structure Go ?

Comment accéder et stocker l'adresse mémoire d'une structure Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-29 13:37:25366parcourir

How Do I Access and Store the Memory Address of a Go Struct?

Accès et stockage des adresses mémoire des structures Go

Comprendre le comportement des adresses mémoire et des pointeurs est crucial en programmation, en particulier avec des structures de données complexes comme les structures Go. Cet article explore les nuances de l'impression et de la manipulation des adresses de structure.

Considérez le programme Go suivant :

type Rect struct {
 width int
 name int 
}

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

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

Lors de l'exécution de ce programme, vous pouvez observer une sortie au format _____0x40c130 {15 6} &{15 6} &{15 6}. Bien que cette sortie fournisse quelques informations sur les emplacements mémoire, elle n'affiche pas explicitement l'adresse de la variable r.

Pour imprimer directement l'adresse de r, nous devons contourner le formatage par défaut utilisé par fmt.Println( ). Au lieu de cela, nous pouvons spécifier une chaîne de format pour contrôler la sortie. Le verbe %p est utilisé pour imprimer des pointeurs et des adresses. Modifier la ligne fmt.Println() comme suit imprimera l'adresse de r :

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

Cela affichera l'adresse de r au format hexadécimal, tel que 0x414020.

De plus, si vous souhaitez stocker l'adresse de r dans une variable, vous pouvez utiliser la syntaxe suivante :

addr := &r

Ceci attribuera l’adresse mémoire de r à la variable addr. Vous pouvez ensuite utiliser addr pour accéder ou modifier indirectement les valeurs contenues dans la structure Rect.

N'oubliez pas que lorsque vous travaillez avec des pointeurs et des adresses, il est essentiel de prendre en compte le contexte et le but pour bien comprendre leur utilisation.

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