Typkonvertierung zwischen Slices von Strukturen in Go
Problem:
In einem Versuch Beim Konvertieren eines Segments anonymer Strukturen in ein Segment nicht anonymer Strukturen treten Fehler auf. Dies wirft Fragen zur Äquivalenz von Strukturen mit und ohne JSON-Tags und zur Kompatibilität verschiedener Slices auf.
Antwort:
Unterschiede zwischen Strukturtypen:
Strukturen mit unterschiedlichen JSON-Tags werden als unterschiedliche Typen betrachtet, da die Tags die Kodierung und Dekodierung von JSON-Daten beeinflussen.
Konvertierungsoptionen:
1. Durch Iteration kopieren:
Dies ist die empfohlene Methode, aber sie ist langsamer und ausführlicher. Dabei wird jedes Element des anonymen Struktur-Slices in das nicht-anonyme Struktur-Slice kopiert.
<code class="go">ls := make(ListSociete, len(res)) for i := 0; i < len(res); i++ { ls[i].Name = res[i].Name } return ls, nil</code>
2. Unsichere Konvertierung:
Dies ist eine unsichere Methode, die davon ausgeht, dass die zugrunde liegende Datenstruktur beider Strukturtypen identisch ist.
<code class="go">return *(*ListSociete)(unsafe.Pointer(&res)), nil</code>
Warnung:
Die unsichere Konvertierung kann zu unvorhersehbarem Verhalten führen und wird nicht für den allgemeinen Gebrauch empfohlen. Die Verwendung kann zu Speicherbeschädigungen oder anderen unerwarteten Fehlern führen.
Das obige ist der detaillierte Inhalt vonWie konvertiert man in Go ein Stück anonymer Strukturen in ein Stück nicht-anonymer Strukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!