Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menukar Antara Go Structs dengan Ahli Yang Sama tetapi Berbeza Jenis?
Menukar Struktur dengan Ahli Yang Sama tetapi Jenis Berbeza
Dalam Go, anda mungkin menghadapi situasi di mana anda mempunyai dua struct dengan ahli yang sama tetapi jenis yang berbeza . Ini boleh menimbulkan cabaran apabila anda perlu menyalin nilai dari satu struct ke yang lain.
Contoh Kes Penggunaan
Pertimbangkan contoh berikut:
type Common struct { Gender int From string To string } type Foo struct { Id string Name string Extra Common } type Bar struct { Id string Name string Extra Common }
Andaikan anda mempunyai foo pembolehubah jenis Foo dan anda mahu menyalin nilainya ke bar jenis pembolehubah Bar.
Pendekatan Penukaran
Memandangkan jenis asas Foo dan Bar adalah sama kecuali untuk teg struct, anda boleh menggunakan penukaran jenis untuk menyalin nilai. Begini cara anda boleh melakukannya:
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo)
Dalam kod di atas, Bar(foo) penukaran secara eksplisit menukar nilai foo daripada jenis Foo kepada Bar. Ini mungkin kerana jenis asas adalah sama.
Contoh Taman Permainan
pakej utama
import "fmt"
taip Common struct {
Gender int From string To string
}
taip Foo struct {
Id string Name string Extra Common
}
type Bar struct {
Id string Name string Extra Common
}
func main() {
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo) fmt.Println(bar)
}
Output
{123 Joe {0 "" ""}}
Seperti yang anda lihat, nilai daripada foo telah berjaya disalin ke bar.
Nota:
Pendekatan penukaran berfungsi hanya apabila jenis asas struct adalah sama kecuali untuk tag struct. Jika jenis asas berbeza, anda perlu menyalin nilai ahli mengikut ahli secara manual.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Antara Go Structs dengan Ahli Yang Sama tetapi Berbeza Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!