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

Bagaimanakah Saya Boleh Menukar Antara Go Structs dengan Ahli Yang Sama tetapi Berbeza Jenis?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 16:19:10119semak imbas

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

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!

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