Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memindahkan Data dengan Cekap Antara Go Structs dengan Ahli Yang Sama tetapi Berbeza Jenis?

Bagaimanakah Saya Boleh Memindahkan Data dengan Cekap Antara Go Structs dengan Ahli Yang Sama tetapi Berbeza Jenis?

Patricia Arquette
Lepaskan: 2024-12-10 02:18:13
asal
474 orang telah melayarinya

How Can I Efficiently Transfer Data Between Go Structs with Identical Members but Different Types?

Salin Struktur dengan Ahli Yang Sama dan Jenis Varian

Dalam Go, bukan sesuatu yang luar biasa untuk mempunyai struct dengan ahli yang sama tetapi jenis yang berbeza. 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
}
Salin selepas log masuk

Memandangkan contoh Foo dan Bar, bagaimanakah kita boleh memindahkan data dari satu ke yang lain?

Penyelesaian: Penukaran

Memandangkan jenis asas Foo dan Bar adalah sama selain daripada teg struct, Go menawarkan penyelesaian yang mudah: penukaran. Dengan menukar nilai Foo kepada Bar taip, kami menimpa data sedia ada dalam Bar dengan berkesan. Berikut ialah kodnya:

foo := Foo{Id: "123", Name: "Joe"}
bar := Bar(foo)
Salin selepas log masuk

Contoh

Mari kita uji penukaran dalam contoh taman permainan: https://go.dev/play/p/1W3EXQVXVhS.

Batasan

Perlu diperhatikan bahawa penukaran hanya berfungsi apabila jenis asas adalah sama kecuali struct tag. Jika jenis asas berbeza dengan ketara, mencipta fungsi salinan khusus akan diperlukan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memindahkan Data dengan Cekap Antara Go Structs dengan Ahli Yang Sama tetapi Berbeza Jenis?. 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