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.
・ 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.
-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.
-Eine Struktur kann mit "
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.
}
・ 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