Heim >Backend-Entwicklung >Golang >Lassen Sie uns über die Methode zur Initialisierung der Datenstruktur in GO sprechen (mit Codebeispielen).

Lassen Sie uns über die Methode zur Initialisierung der Datenstruktur in GO sprechen (mit Codebeispielen).

藏色散人
藏色散人nach vorne
2023-01-03 16:32:283424Durchsuche

Dieser Artikel stellt Ihnen die Methode zur Initialisierung der Datenstruktur in der GO-Sprache vor. Schauen wir uns an, wie man sie verwendet. Ich hoffe, dass sie für alle hilfreich ist.

Wie initialisiert man die Datenstruktur beim Codieren mit Golang?

GO bietet 2 Schlüsselwörter zum Initialisieren der Datenstruktur

  • new
  • make

Aber manchmal verwende ich auch geschweifte Klammern, um direkt zu initialisieren, zum Beispiel:

name := []string{"xiaomotong","bob","marry"}

Im obigen Fall sind die Werte ​Die auszufüllenden Daten wurden während der Initialisierung klar definiert. Sie können die oben genannte Methode verwenden. In den meisten Fällen sind die Daten jedoch während der Initialisierung noch unbekannt . Methode

make

make ist ein von golang bereitgestelltes Schlüsselwort. Es wird hauptsächlich zum Initialisieren integrierter Datenstrukturen verwendet. Die Datentypen, die von make initialisiert werden können, sind:

  • slice-Slice
  • Map-Hash-Tabelle
  • Kanalkanal

Beim Initialisieren können wir beispielsweise so schreiben:

  • Einen Slice initialisieren und den Len-Wert und den Cap-Wert eingeben. Zusätzlich zu diesen beiden Werten Die zugrunde liegende Datenstruktur des Slice hat auch einen Zeiger auf ein zugrunde liegendes Array. Die unterste Ebene der Karte ist ein Strukturzeiger, der auf eine hmap zeigt. Wenn Sie an den spezifischen Mitgliedern von xdm in der Struktur interessiert sind kann meinen historischen Artikel lesen
  • Einen Kanal ch initialisieren. Dieser Kanal ist ein Strukturzeiger, der auf einen Hchan zeigt. Sie können auch meinen historischen Artikel für Details lesen
  • strs := make([]string, 0, 10)myMap := make(map[string]string, 10)ch := make(chan struct{}, 10)
  • Wir schauen uns die Quellcode-Erklärung von
make

an Sehen Sie, dass make die Erstellung und Initialisierung der oben genannten 3 Typen

unterstützt.

Lassen Sie uns über die Methode zur Initialisierung der Datenstruktur in GO sprechen (mit Codebeispielen).Gemäß der Erklärung wissen wir, dass der Typ des Rückgabewerts von

make

mit dem Typ der ausgefüllten Parameter übereinstimmt. Wir geben den Slice-Typ ein, dann ist der Rückgabewert der entsprechende Rückgabewert anderer Typen. Daran ist nichts auszusetzen

neu

Also warum Liegt es daran, dass mit „make“ die Datenstruktur initialisiert wird, warum ist „new“ erforderlich?

Vorsicht Fat Fish kann sehen, dass make, wie bereits erwähnt, nur zum Initialisieren der von Golang bereitgestellten integrierten Datenstrukturen geeignet ist. Zu diesem Zeitpunkt müssen Sie noch

new

verwenden Kümmere dich um die Dinge

Das Initialisieren der Datenstruktur mit new kann wie folgt geschrieben werden:

Anpassen einer Struktur mit 2 Mitgliedern, Alter und Name
  • Verwenden Sie new, um T zu initialisieren und einen Zeiger auf die Struktur zurückzugeben
  • type T struct{
        age int
        name string}func main(){
    
        t := new(T)
        fmt.Println("t.name == ",t.name)
        fmt.Println("t.age == ",t.age)}
Programmausführungseffekt Wie folgt:

# go run main.got.name ==t.age ==  0
Natürlich wurde die Datenstruktur für mich initialisiert, aber die Daten sind alle

Nullwerte

Natürlich können wir auch so schreiben:

func main(){

    a := new(int)
    fmt.Println("a == ",a)
    fmt.Println("*a == ",*a)}

Der Programmausführungseffekt lautet wie folgt:

# go run main.goa ==  0xc420018078
*a ==  0
Gemäß den Ergebnissen der Programmausführung wissen wir, dass new einen Zeiger zurückgibt und der entsprechende Wert an der Speicheradresse, auf die dieser Zeiger zeigt, ein

Nullwert dieses Typs ist

Schauen Sie sich das an in der Beschreibung des neuen Quellcodes

Lassen Sie uns über die Methode zur Initialisierung der Datenstruktur in GO sprechen (mit Codebeispielen).Golang-Quellcode besagt, dass new Der erste Parameter ist ein Datentyp, kein Wert, und der Rückgabewert von

new

ist ein Zeiger, der gemäß dem Parameter nullwertigen Speicher zuweist Typ

Daher ist die Datenstruktur, die wir oben gesehen haben, aus neuen, gedruckten Daten Sie sind alle Nullwerte der entsprechenden Typen

Der Unterschied zwischen make und new

Lassen Sie uns abschließend den Unterschied zwischen make und klären Neu, um den Eindruck zu vertiefen. Make kann nur zum Initialisieren integrierter Datentypen verwendet werden (Typen)

  • make gibt eine Referenz zurück, bei der es sich um den Typ

    Type
      handelt, und new gibt einen Zeiger zurück, bei dem es sich um
    • *Type

      handelt.

Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Methode zur Initialisierung der Datenstruktur in GO sprechen (mit Codebeispielen).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen