Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Menukar Antara Potongan Struktur dengan Selamat dalam Go: Panduan untuk Menaip Penukaran dan Amalan Terbaik

Cara Menukar Antara Potongan Struktur dengan Selamat dalam Go: Panduan untuk Menaip Penukaran dan Amalan Terbaik

Linda Hamilton
Linda Hamiltonasal
2024-10-31 10:50:02253semak imbas

How to Safely Convert Between Slices of Structs in Go: A Guide to Type Conversion and Best Practices

Penukaran Jenis antara Slices of Structs in Go

Apabila bekerja dengan kepingan struct dalam Go, adalah penting untuk memahami perbezaan antara pelbagai jenis. Dalam kes ini, kami mempunyai jenis berikut:

  • ListSociete: Jenis struct tersuai yang digunakan untuk menyimpan senarai struct Societe.
  • [ ]Societe: Sepotong struct Societe.
  • []struct{Name string json:"a.name"}: Jenis struct tanpa nama dengan satu medan Nama dan a Teg JSON.

Soalan 1: Adakah []struct{Name string} dan []struct{Name string json:"a.name" } berbeza?

Ya, mereka berbeza kerana tag JSON json:"a.name". Spesifikasi Go dengan jelas menyatakan bahawa dua jenis struct adalah sama hanya jika mereka mempunyai medan, nama, jenis, tag dan yang sama.

Soalan 2: Adakah ListSociete berbeza daripada []struct{Name string}?

Ya, mereka berbeza kerana ListSociete ialah jenis tersuai manakala []struct{Name string} ialah jenis tanpa nama. Mereka juga mempunyai nama medan yang berbeza.

_Penyelesaian:

Terdapat dua pilihan untuk menukar antara jenis ini:

Pilihan 1: Salin melalui Lelaran

Kaedah ini selamat dan boleh dipercayai, tetapi memerlukan penyalinan yang jelas:

<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

Kaedah tidak selamat ini secara langsung menukar struktur data asas:

<code class="go">return *(*ListSociete)(unsafe.Pointer(&res)), nil</code>

Kaedah ini harus digunakan dengan berhati-hati kerana ia boleh menyebabkan tingkah laku yang tidak dijangka .

_Contoh Taman Permainan: http://play.golang.org/p/lfk7qBp2Gb

Atas ialah kandungan terperinci Cara Menukar Antara Potongan Struktur dengan Selamat dalam Go: Panduan untuk Menaip Penukaran dan Amalan Terbaik. 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