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.
・ 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.
-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.
-Une structure peut être définie avec "
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.
}
・ 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