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

Linda Hamilton
Lepaskan: 2024-10-31 10:50:02
asal
296 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan