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
535 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!

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