Penukaran Struktur dalam Go
Pertimbangkan dua struct berikut:
type A struct { a int b string } type B struct { A c string }
Andaikan anda mempunyai pembolehubah jenis A dan ingin menukarnya kepada jenis B. Adakah ini boleh dilakukan dalam Go, atau adakah anda perlu menyalin medan secara manual atau membuat kaedah penukaran eksplisit?
Kaedah 1: Tugasan Struktur Terbenam
Seperti yang anda nyatakan dalam soalan anda, pembenaman boleh digunakan untuk tujuan ini. Dengan membenamkan A dalam B, anda boleh menukar pembolehubah jenis A kepada jenis B hanya dengan memberikannya kepada medan terbenam. Contohnya:
func main() { structA := A{a: 42, b: "foo"} structB := B{A: structA} // Embed structA into structB }
Pendekatan ini mencipta tika baharu B yang mengandungi data daripada A dalam medan terbenamnya.
Kaedah 2: Penyalinan Medan Manual
Sebagai alternatif, anda boleh menyalin medan dari A ke B secara manual seperti berikut:
func main() { structA := A{a: 42, b: "foo"} structB := B{ A: structA, // Copy fields from structA c: "bar", } }
Kaedah ini melibatkan mencipta tika baharu B dan menetapkan medan daripada A secara manual.
Kaedah 3: Kaedah Penukaran Eksplisit
Pilihan lain ialah mencipta kaedah penukaran eksplisit yang menukar A kepada B. Ini mungkin berguna jika anda mempunyai logik penukaran yang kompleks. Walau bagaimanapun, pendekatan ini tidak diperlukan dalam kes ini, kerana kaedah di atas menyediakan cara yang mudah untuk mencapai penukaran yang diingini.
Atas ialah kandungan terperinci Cara Menukar Struct dalam Go: Membenamkan, Menyalin Manual atau Penukaran Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!