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 }
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{}
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 }
Suis Jenis:
func bar(baz interface{}) { switch f := baz.(type) { case *foo: // Use f as a *foo pointer default: // Handle other cases } }
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!