[Go] Grammaire de base ③ Pointeur

Maintenant que j'ai fini de regarder l'édition "Pointer" du cours udemy, je vais l'examiner.

Cette fois aussi, j'ai appris le fonctionnement de base en sortant sur la console.

supposition

・ Apprenez le Go en regardant [Introduction à Go enseignée par des ingénieurs actifs de la Silicon Valley + Développement de l'application Bitcoin Systre Fintech par application]](https://www.udemy.com/course/go-fintech/) Pendant ~

・ L'environnement de développement est VS Code + plug-in (la version Go est la 1.15) ・ Le système d'exploitation est Windows ・ J'utilise généralement Java.

Aiguille

-Si vous spécifiez une variable de type pointeur, vous pouvez directement écraser le contenu de la mémoire. ・ S'il est difficile à comprendre, ajoutez "&" et "*" et déplacez-le de manière appropriée pour comprendre. -Lors de la génération d'un type de pointeur, utilisez "new" au lieu de "make".

python



func one(x int) {
    //Recevoir uniquement les valeurs de la fonction principale
	fmt.Println(&x)
	x = 1
}

func two(x *int) {
    //Reçoit l'adresse de x dans une zone de type pointeur.
	fmt.Println(&x)
	//Écraser directement le contenu de l'adresse
	*x = 2
}
func main() {
	var n int = 100

    //L'adresse mémoire est sortie
	fmt.Println(&n)

	//Entrez l'adresse de type de point d'un entier (identique au langage C)
	var p *int = &n
	fmt.Println(p)

	//Lorsque vous voulez voir le contenu de la mémoire pointé par l'adresse
	fmt.Println(*p)

	one(n)
	//Puisque n dans l'argument de un est une copie, cela n'a aucun effet sur n dans la fonction.
	fmt.Println(n) //100 est la sortie

	two(&n)
	fmt.Println(n)  //2 est la sortie

}

Je n'ai pas compris ce "pointeur", mais l'article "Pointeur et adresse pour apprendre avec Go" et le lien cité dans l'article L'explication ci-dessus était facile à comprendre. Puisqu'il s'agit d'un concept dérivé du langage C, il semble qu'il existe des connaissances que de nombreux seniors ont eu du mal à accumuler.

struct

-Une structure peut être définie avec " struct". -Pour contenir la valeur, elle doit être définie comme un type de pointeur.

python


type Vertex struct {
	//La variable commence par le capital
	//Traité comme privé lorsqu'il est réduit
	X int
	Y int
	S string
}

func changeVertex(v Vertex) {
	v.X = 1000
}

func changeVertex2(v *Vertex) {
	v.X = 1000
	(*v).X = 1000 //C'est la manière correcte de l'écrire, mais dans le cas de struct, il fait automatiquement référence au pointeur réel.
}

func prg3() {
    //Génération de structure
	v := Vertex{X: 1, Y: 2}  //Les valeurs initiales sont saisies pour les variables non définies
	changeVertex(v)          //Passer la structure par valeur (copie)
	fmt.Println(v)           //Résultat de sortie:{1 2 }
	v.X = 100                //Des variables peuvent également être spécifiées
	fmt.Println(v.X, v.Y)    //Résultat de sortie: 100 2

	v2 := &Vertex{1, 2, "text"}
	changeVertex2(v2)
	fmt.Println(v2)          //Résultat de sortie:&{1000 2 text}

	var v3 Vertex
	fmt.Println(v3)          //Notez que ce n'est pas nul. Celui avec la valeur initiale est construit
                             //Résultat de sortie:{0 0 }
	v4 := new(Vertex)
	fmt.Println(v4)          //Résultat de sortie de type pointeur:&{0 0 }

	v5 := &Vertex{}
	fmt.Println(v5)          //Il a le même contenu que le type pointeur v6, mais il est plus facile de le distinguer du type pointeur.
}

Impressions

・ Il est difficile de comprendre le concept de pointeurs. -La structure ressemble à un objet java.



Dernier message

Grammaire de base ① Définition

Déclaration de grammaire de base ②

Recommended Posts

[Go] Grammaire de base ③ Pointeur
[Go] Grammaire de base ② Instruction
Grammaire de base Python3
Grammaire de base Python (divers)
Mémo de grammaire de base Python
Un expert Ruby a appris la grammaire de base du langage Go
Grammaire de base du système Python3 (quelques itérations de Python)
Mémo de grammaire de base Python (1)
Grammaire de base Python (divers) Mémo (3)
Grammaire de base Python (divers) Mémo (2)
Grammaire de base Python pour les débutants
J'ai appris la grammaire de base de Python
Grammaire de base Python (divers) Mémo (4)
Installation de Python (Python 3.7.7) et grammaire de base
Comparaison de la grammaire de base entre Java et Python
Introduction à Ansible Partie 2 'Grammaire de base'
À propos du type de base de Go
Grammaire de base du système Python3 (dictionnaire)
[Grammaire de base] Différences entre Ruby / Python / PHP
[Python] J'ai personnellement résumé la grammaire de base.
Grammaire de base de la série Python3 (chaîne de caractères)
Grammaire de base de la série Python3 (liste, tapple)
Grammaire de base du système Python3 (notation incluse)