Rumah > pembangunan bahagian belakang > Golang > Bolehkah penukaran jenis Go menyalin nilai antara struct dengan ahli yang sama tetapi jenis yang berbeza?

Bolehkah penukaran jenis Go menyalin nilai antara struct dengan ahli yang sama tetapi jenis yang berbeza?

Patricia Arquette
Lepaskan: 2024-12-13 03:39:09
asal
470 orang telah melayarinya

Can Go's type conversion copy values between structs with identical members but different types?

Menyalin Struktur dengan Ahli Yang Sama dan Jenis Berbeza

Dalam Go, adalah mungkin untuk menghadapi situasi di mana dua struct berkongsi ahli yang sama tetapi mempunyai jenis yang berbeza. Sebagai contoh, 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
}
Salin selepas log masuk

Memandangkan contoh Foo (bernama foo) dan tika Bar (bar bernama), bolehkah kita menyalin nilai dari foo ke bar?

Penyelesaian Menggunakan Penukaran Jenis

Memandangkan jenis asas Foo dan Bar ialah sama kecuali untuk teg struct, kita boleh memanfaatkan penukaran jenis untuk menukar jenis. Ini melibatkan langkah berikut:

  1. Isytiharkan pembolehubah jenis Foo bernama foo.
  2. Isytiharkan pembolehubah jenis Bar bernama bar.
  3. Tetapkan nilai foo untuk menyekat menggunakan penukaran jenis.
foo := Foo{Id: "123", Name: "Joe"}
bar := Bar(foo)
Salin selepas log masuk

Taman permainan Contoh

Anda boleh menguji penyelesaian ini di Go Playground:
https://go.dev/play/p/j5jL1XFs-zG

Nota: Penukaran hanya berfungsi apabila jenis asas adalah sama kecuali untuk teg struktur. Jenis kompleks seperti peta, kepingan atau tatasusunan dalam struct memerlukan pendekatan yang lebih terperinci untuk menyalin nilai.

Atas ialah kandungan terperinci Bolehkah penukaran jenis Go menyalin nilai antara struct dengan ahli yang sama tetapi jenis yang berbeza?. 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