Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menduakan Struktur dengan Ahli Setara tetapi Jenis Tidak Serupa dalam Go?

Bagaimanakah Saya Boleh Menduakan Struktur dengan Ahli Setara tetapi Jenis Tidak Serupa dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-11 18:47:14747semak imbas

How Can I Duplicate a Struct with Equivalent Members but Dissimilar Types in Go?

Struktur Penduaan dengan Ahli Setara dan Jenis Tidak Serupa

Pertimbangkan senario berikut: anda mempunyai dua struktur yang berbeza, Foo dan Bar, setiap satu mempunyai struktur yang sama ahli tetapi berbeza dalam jenis asasnya. Objektif anda adalah untuk memindahkan kandungan satu struktur kepada yang lain.

Dalam keadaan ini, pertimbangkan takrifan struktur 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
}

Memandangkan contoh foo bagi Foo dan bar Bar, bagaimana bolehkah bar diduplikasi daripada foo?

Penyelesaian: Taip Penukaran

Memandangkan jenis asas Foo dan Bar adalah setara dari segi struktur, penukaran jenis boleh digunakan untuk mengubah jenis objek. Kod berikut menunjukkan cara menyalin nilai Foo ke nilai Bar menggunakan penukaran:

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

Nota Keserasian Jenis

Adalah penting untuk diingat bahawa teknik penukaran jenis ini hanya berkesan apabila jenis asas struktur pada asasnya adalah sama, kecuali untuk sebarang tag struct.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menduakan Struktur dengan Ahli Setara tetapi Jenis Tidak Serupa dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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