Dalam Go, memberikan tatasusunan struct terus kepada tatasusunan antaramuka menimbulkan ralat masa kompilasi. Untuk memahami sebabnya, mari kita mendalami mekanisme asas.
antara muka{} mewakili jenis generik yang boleh menyimpan sebarang nilai. Walau bagaimanapun, ia secara dalaman diwakili sebagai pasangan dua perkataan:
Berbeza dengan antara muka, struct menyimpan medannya secara bersebelahan dalam ingatan, tanpa jenis perkataan yang berasingan.
Memandangkan struct dan antara muka mempunyai perwakilan memori yang berbeza, ia tidak boleh ditugaskan secara langsung. Sistem jenis memastikan ini untuk mengekalkan keselamatan jenis.
Untuk mencapai gelagat yang diingini, pertimbangkan pilihan ini:
Menggunakan Secebis Antara Muka
Anda boleh mencipta sekeping antara muka dan menetapkan elemen struct secara individu:
y := make([]interface{}, len(x)) for i, v := range x { y[i] = v }
Menyimpan Antara Muka ke Slice
Sebagai alternatif, simpan antara muka pada kepingan struct:
var y interface{} y = x
Atas ialah kandungan terperinci Bolehkah Tatasusunan `antara muka{}` Go Terus Memegang Tatasusunan Struktur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!