Rumah > Artikel > pembangunan bahagian belakang > Cara Menukar Antara Potongan Struktur dengan Selamat dalam Go: Panduan untuk Menaip Penukaran dan Amalan Terbaik
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:
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!