Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menukar Penunjuk Struct kepada Nilai{} antara muka dalam Go?

Bagaimanakah Saya Boleh Menukar Penunjuk Struct kepada Nilai{} antara muka dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-01 03:14:10
asal
628 orang telah melayarinya

How Can I Convert a Struct Pointer to an interface{} Value in Go?

Menukar Penunjuk Struktur kepada Nilai{} Antara Muka

Memandangkan coretan kod berikut:

type foo struct {}

func bar(baz interface{}) {}
Salin selepas log masuk

di mana kedua-dua foo dan bar tidak boleh diubah mengikut reka bentuk , bagaimana anda boleh menukar penuding struktur &foo{} kepada nilai antara muka{} dan seterusnya gunakannya sebagai parameter untuk fungsi bar?

Penyelesaian

Mengirim penunjuk struct ke nilai antara muka{} adalah mudah:

f := &foo{}
bar(f) // Every type implements interface{}, so no special action is required.
Salin selepas log masuk

Memulihkan *foo asal penunjuk daripada nilai antara muka{} memerlukan sama ada penegasan jenis atau suis jenis.

Jenis Penegasan:

func bar(baz interface{}) {
    f, ok := baz.(*foo)
    if !ok {
        // The assertion failed because baz was not of type *foo.
    }

    // f is of type *foo.
}
Salin selepas log masuk

Suis Jenis:

func bar(baz interface{}) {
    switch f := baz.(type) {
    case *foo: // f is of type *foo.
    default: // f is some other type.
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Penunjuk Struct kepada Nilai{} antara muka dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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