Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar Sekeping Struktur Tanpa Nama kepada Sekeping Struktur Tertakrif di Golang?

Bagaimana untuk Menukar Sekeping Struktur Tanpa Nama kepada Sekeping Struktur Tertakrif di Golang?

Susan Sarandon
Susan Sarandonasal
2024-10-26 16:33:30425semak imbas

How to Convert a Slice of Anonymous Structs to a Slice of Defined Structs in Golang?

Penukaran Jenis antara Potongan Struktur di Golang

Siasatan ini tertumpu pada penukaran jenis antara kepingan struktur. Khususnya, kami menyasarkan untuk menukar kepingan struct tanpa nama kepada kepingan struct yang ditakrifkan.

Isu Asas

Isu ini timbul disebabkan oleh perbezaan antara dua jenis struct:

  • Societe struct dengan satu medan bernama Name
  • Anonymous struct dengan satu field bernama Name tag dengan json:"a.name"

Kehadiran tag mencipta jenis struct yang berbeza, menghalang penukaran langsung.

Pilihan Penyelesaian

Pilihan 1: Lelaran dan Penyalinan

  • Lelaran melalui kedua-dua kepingan dan salin secara manual setiap medan daripada struct tanpa nama ke struct Societe.
  • Pendekatan ini selamat dan boleh dipercayai tetapi kurang cekap kerana sifat berulang.
<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>

Pilihan 2: Penukaran Tidak Selamat

  • Penukaran jenis langsung menggunakan penunjuk tidak selamat.
  • Kaedah ini memintas pemeriksaan jenis dan boleh mengakibatkan ralat masa jalan jika struktur data asas berubah secara tidak dijangka.
  • Awas: Gunakan pendekatan ini dengan berhati-hati kerana ia menjejaskan keselamatan jenis.
<code class="go">return *(*ListSociete)(unsafe.Pointer(&amp;res)), nil</code>

Amalan Terbaik

  • Tentukan struct yang sesuai untuk diwakili model data.
  • Gunakan penukaran jenis eksplisit jika perlu untuk mengekalkan keselamatan jenis.
  • Pilih pendekatan lelaran dan penyalinan yang selamat untuk penukaran yang boleh dipercayai.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Sekeping Struktur Tanpa Nama kepada Sekeping Struktur Tertakrif di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn