Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menghantar Penunjuk Struktur ke Antara Muka dalam Go dan Mengakses Penunjuk Asal dengan Selamat?

Bagaimanakah Saya Boleh Menghantar Penunjuk Struktur ke Antara Muka dalam Go dan Mengakses Penunjuk Asal dengan Selamat?

Patricia Arquette
Lepaskan: 2024-12-21 02:31:09
asal
485 orang telah melayarinya

How Can I Cast a Structure Pointer to an Interface in Go and Safely Access the Original Pointer?

Menghantar Penunjuk Struktur ke Antara Muka dalam Go

Dalam Go, selalunya perlu menukar nilai jenis yang berbeza kepada antara muka. Antara muka ialah ciri berkuasa yang membenarkan jenis polimorfisme, membolehkan kod berfungsi dengan jenis yang berbeza tanpa memeriksa jenis khusus mereka secara eksplisit.

Pertimbangkan kod berikut:

type foo struct{}

func bar(baz interface{}) {
    // Do something with baz
}
Salin selepas log masuk

Dalam contoh ini, kami mempunyai foo struct dan bar fungsi yang menerima parameter antara muka jenis{}. Matlamat kami adalah untuk menghantar penuding ke foo struct sebagai parameter ke bar.

Untuk mencapai ini, kami hanya boleh menghantar penuding menggunakan sintaks penegasan jenis:

f := &foo{}
bar(f) // Cast &f to an interface{}
Salin selepas log masuk

Walau bagaimanapun, selepas menghantar, kita mungkin perlu mengakses penuding foo struct asal di dalam fungsi bar. Untuk melakukan ini, kita boleh menggunakan sama ada penegasan jenis atau suis jenis:

Jenis Penegasan:

func bar(baz interface{}) {
    f, ok := baz.(*foo)
    if !ok {
        // Handle the case where baz is not a pointer to a foo struct
    }

    // Use f as a *foo pointer
}
Salin selepas log masuk

Suis Jenis:

func bar(baz interface{}) {
    switch f := baz.(type) {
    case *foo:
        // Use f as a *foo pointer
    default:
        // Handle other cases
    }
}
Salin selepas log masuk

Dengan menggunakan teknik ini, kami boleh bekerja dengan lancar dengan kedua-dua antara muka dan struktur asal penunjuk, memberikan fleksibiliti dan keselamatan taip dalam kod kami.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Penunjuk Struktur ke Antara Muka dalam Go dan Mengakses Penunjuk Asal dengan Selamat?. 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