Penukaran Struktur dalam Go
S: Saya mempunyai dua struct dengan medan berbeza. Bagaimanakah saya boleh menukar pembolehubah jenis A kepada jenis B, di mana A mengandungi hanya medan penting dan B mengandungi medan tambahan? Adakah mungkin untuk melakukan penukaran ini secara langsung atau adakah saya perlu menyalin medan secara manual?
J: Dalam Go, penukaran struct boleh dilakukan dengan memanfaatkan ciri pembenaman. Ini membolehkan anda menyarang medan satu struct dalam yang lain. Sebagai contoh, dalam kes anda, anda mempunyai struct A dengan dua medan (a dan b) dan struct B yang membenamkan struct A dan menambah medan tambahan (c dan berpotensi lebih banyak lagi).
Untuk menukar daripada A kepada B, anda hanya boleh mencipta struct B dan membenamkan contoh A di dalamnya:
<code class="go">type A struct { a int b string } type B struct { A c string } func main() { // create structA of type A structA := A{a: 42, b: "foo"} // convert to type B structB := B{A: structA} // access the fields of structB fmt.Println(structB.a, structB.b, structB.c) // Output: 42 foo (additional value) }</code>
Atas ialah kandungan terperinci Bagaimana untuk Menukar Antara Go Structs dengan Medan Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!