Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konvertiert man in Go ein Stück anonymer Strukturen in ein Stück nicht-anonymer Strukturen?

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

Patricia Arquette
Patricia ArquetteOriginal
2024-10-27 11:40:01864Durchsuche

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>

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!

Stellungnahme:
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