Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Menukar *foo Penunjuk kepada antara muka{} dan Kembali ke Go?

Bagaimanakah Saya Menukar *foo Penunjuk kepada antara muka{} dan Kembali ke Go?

Patricia Arquette
Lepaskan: 2024-12-02 16:23:12
asal
817 orang telah melayarinya

How Do I Convert a *foo Pointer to interface{} and Back in Go?

Menukar Penunjuk Struktur kepada Antara Muka{}

Memberi pengisytiharan jenis tidak berubah seperti berikut:

type foo struct {}

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

Di mana baz perlu ditukar kembali kepada *foo penuding dalam bar, artikel ini meneroka cara untuk menukar &foo{} ke dalam antara muka{} untuk digunakan sebagai parameter dalam bar.

Hantar &foo Penunjuk ke antara muka{}**

Menukar *foo penuding ke antara muka{} ialah mudah:

f := &foo{}
bar(f) // Every type implements interface{}.
Salin selepas log masuk

Menukar antara muka{} Kembali ke foo*

Untuk mendapatkan semula nilai *foo daripada antara muka{}, dua pendekatan tersedia:

Jenis Penegasan:

func bar(baz interface{}) {
    f, ok := baz.(*foo)
    if !ok {
        // baz is not a *foo
    }

    // f is a *foo
}
Salin selepas log masuk

Suis Jenis:

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

Atas ialah kandungan terperinci Bagaimanakah Saya Menukar *foo Penunjuk kepada antara muka{} dan Kembali ke 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