Struct's Nullwert in Golang

8

Hier ist ein Beispielcode:

%Vor%

Ergebnisse ausführen:

%Vor%

Es sieht so aus, als ob diese über var ele A und ele2 := A{}

identisch sind

Also ist der Zero-Wert der Struktur nicht nil , sondern eine Struktur, bei der alle Eigenschaften initialisiert sind. Nullwert. Ist die Vermutung richtig?

Wenn die Vermutung richtig ist, dann ist die Art von var ele A und ele2 := A{} das gleiche, oder? Ich bin mir nicht sicher.

    
soapbar 20.02.2015, 09:41
quelle

1 Antwort

21

Warum (richtig) raten, wenn eine Dokumentation vorhanden ist?

  

Wenn Speicher für eine Variable entweder durch eine Deklaration oder einen Aufruf von new zugewiesen wird oder wenn ein neuer Wert erstellt wird, entweder über ein zusammengesetztes Literal oder einen Aufruf von make, wird keine explizite Initialisierung bereitgestellt , die Variable oder der Wert erhält einen Standardwert.

     

Jedes Element einer solchen Variablen oder eines solchen Werts wird für seinen Typ auf den Wert null gesetzt :

     
  • false für booleans,
  •   
  • 0 für Ganzzahlen,
  •   
  • 0.0 für Floats,
  •   
  • "" für Strings,
  •   
  • und nil für Zeiger, Funktionen, Schnittstellen, Slices, Kanäle und Maps.
  •   

Diese Initialisierung wird rekursiv durchgeführt, so dass zum Beispiel bei jedem Element eines Arrays von Strukturen die Felder auf Null gesetzt werden, wenn kein Wert angegeben ist.

Beachten Sie, dass es keine Möglichkeit gibt, einen Strukturwert auf nil zu setzen (Sie könnten aber den Wert eines Zeigers auf eine Struktur auf nil setzen).

    
Denys Séguret 20.02.2015, 09:42
quelle

Tags und Links