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
Patricia Arquetteasal
2024-12-02 16:23:12710semak imbas

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{}) {}

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{}.

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
}

Suis Jenis:

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

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:
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