Menghantar Penunjuk Struct ke Antara Muka
Memandangkan struct foo dan bar fungsi mempunyai takrifan yang tidak fleksibel, soalan ini mencari penyelesaian untuk tukar penuding kepada foo kepada antara muka{} untuk digunakan sebagai parameter dalam bar. Selain itu, penukaran kembali kepada penuding foo struct dalam bar adalah perlu.
Penukaran kepada Antara Muka{}
Untuk menukar &foo{} kepada antara muka{}, proses adalah mudah:
f := &foo{} bar(f) // Every type implements interface{}.
Penukaran Kembali ke *foo
Untuk mendapatkan semula *foo dari antara muka{}, dua kaedah tersedia:
Jenis Penegasan
func bar(baz interface{}) { f, ok := baz.(*foo) if !ok { // baz was not of type *foo. The assertion failed. } // f is of type *foo }
Suis Taip
func bar(baz interface{}) { switch f := baz.(type) { case *foo: // f is of type *foo default: // f is some other type } }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Penunjuk Struct ke Antara Muka{} dan Kembali ke Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!