[Go] Grundlegende Grammatik ③ Zeiger

Nachdem ich mir die "Pointer" -Ausgabe des udemy-Kurses angesehen habe, werde ich sie überprüfen.

Auch dieses Mal habe ich die grundlegende Bedienung während der Ausgabe auf der Konsole gelernt.

Annahme

・ Lernen Sie Go, indem Sie [Einführung in Go, unterrichtet von aktiven Silicon Valley-Ingenieuren + Entwicklung der Bitcoin Systre Fintech-App nach Anwendung]](https://www.udemy.com/course/go-fintech/) Während ~

・ Entwicklungsumgebung ist VS Code + Plug-In (Go-Version ist 1.15) ・ Betriebssystem ist Windows ・ Ich benutze normalerweise Java.

Zeiger

-Wenn Sie eine Zeigertypvariable angeben, können Sie den Inhalt des Speichers direkt überschreiben. ・ Wenn es schwer zu verstehen ist, fügen Sie "&" und "*" hinzu und verschieben Sie es entsprechend, um es zu verstehen. -Wenn Sie einen Zeigertyp generieren, verwenden Sie "new" anstelle von "make".

python



func one(x int) {
    //Empfangen Sie nur Werte von der Hauptfunktion
	fmt.Println(&x)
	x = 1
}

func two(x *int) {
    //Empfängt die Adresse von x in einem Zeigertyp.
	fmt.Println(&x)
	//Überschreiben Sie den Inhalt der Adresse direkt
	*x = 2
}
func main() {
	var n int = 100

    //Die Speicheradresse wird ausgegeben
	fmt.Println(&n)

	//Geben Sie die Punkttypadresse der Ganzzahl ein (entspricht der Sprache C).
	var p *int = &n
	fmt.Println(p)

	//Wenn Sie den Inhalt des Speichers sehen möchten, auf den die Adresse zeigt
	fmt.Println(*p)

	one(n)
	//Da n im Argument von eins eine Kopie ist, hat es keine Auswirkung auf n in der Funktion.
	fmt.Println(n) //100 wird ausgegeben

	two(&n)
	fmt.Println(n)  //2 wird ausgegeben

}

Ich konnte diesen "Zeiger" nicht verstehen, aber den Artikel "Zeiger und Adresse zum Lernen mit Go" und den im Artikel zitierten Link Die obige Erklärung war leicht zu verstehen. Da es sich um ein Konzept handelt, das von der C-Sprache abgeleitet ist, scheint es Wissen zu geben, das viele Senioren nur schwer anhäufen können.

struct

-Eine Struktur kann mit " Struktur" definiert werden. -Um den Wert zu halten, muss er als Zeigertyp definiert werden.

python


type Vertex struct {
	//Variable beginnt mit Kapital
	//Wird als privat behandelt, wenn es niedriger gemacht wird
	X int
	Y int
	S string
}

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

func changeVertex2(v *Vertex) {
	v.X = 1000
	(*v).X = 1000 //Dies ist die richtige Art, es zu schreiben, aber im Fall von struct bezieht es sich automatisch auf den tatsächlichen Zeiger.
}

func prg3() {
    //Strukturgenerierung
	v := Vertex{X: 1, Y: 2}  //Für undefinierte Variablen werden Anfangswerte eingegeben
	changeVertex(v)          //Übergeben Sie die Struktur als Wert (Kopie)
	fmt.Println(v)           //Ausgabeergebnis:{1 2 }
	v.X = 100                //Variablen können ebenfalls angegeben werden
	fmt.Println(v.X, v.Y)    //Ausgabeergebnis: 100 2

	v2 := &Vertex{1, 2, "text"}
	changeVertex2(v2)
	fmt.Println(v2)          //Ausgabeergebnis:&{1000 2 text}

	var v3 Vertex
	fmt.Println(v3)          //Beachten Sie, dass es nicht Null ist. Der mit dem Anfangswert wird konstruiert
                             //Ausgabeergebnis:{0 0 }
	v4 := new(Vertex)
	fmt.Println(v4)          //Ausgabeergebnis des Zeigertyps:&{0 0 }

	v5 := &Vertex{}
	fmt.Println(v5)          //Es hat den gleichen Inhalt wie der Zeigertyp v6, ist jedoch einfacher vom Zeigertyp zu unterscheiden.
}

Impressionen

・ Das Konzept der Zeiger ist schwer zu verstehen. -Die Struktur fühlt sich wie ein Java-Objekt an.



Letzter Beitrag

Grundlegende Grammatik ① Definition

Grundlegende Grammatik ② Anweisung

Recommended Posts

[Go] Grundlegende Grammatik ③ Zeiger
[Go] Grundlegende Grammatik ② Anweisung
Grundlegende Grammatik von Python3
Python-Grundgrammatik (Sonstiges)
Python grundlegende Grammatik Memo
Ein Ruby-Experte lernte die grundlegende Grammatik der Go-Sprache
Grundlegende Grammatik des Python3-Systems (einige Iterationen von Python)
Python-Grammatik-Grundnotiz (1)
Python-Grundgrammatik (Verschiedenes) Memo (3)
Python-Grundgrammatik (Verschiedenes) Memo (2)
Grundlegende Python-Grammatik für Anfänger
Ich habe die grundlegende Python-Grammatik gelernt
Python-Grundgrammatik (Verschiedenes) Memo (4)
Python (Python 3.7.7) Installation und grundlegende Grammatik
Vergleich der grundlegenden Grammatik zwischen Java und Python
Einführung in Ansible Teil 2 'Grundlegende Grammatik'
Über den Grundtyp von Go
Grundlegende Grammatik des Python3-Systems (Wörterbuch)
[Grundlegende Grammatik] Unterschiede zwischen Ruby / Python / PHP
[Python] Ich habe die grundlegende Grammatik persönlich zusammengefasst.
Grundlegende Grammatik der Python3-Reihe (Zeichenkette)
Grundlegende Grammatik der Python3-Reihe (Liste, Tapple)
Grundlegende Grammatik des Python3-Systems (inklusive Notation)