Wie konvertiert man in Go ein Stück anonymer Strukturen in ein Stück nicht-anonymer Strukturen?

Patricia Arquette
Freigeben: 2024-10-27 11:40:01
Original
953 Leute haben es durchsucht

How to Convert a Slice of Anonymous Structs to a Slice of Non-Anonymous Structs in Go?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage