Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mensimulasikan Penunjuk Kekosongan dalam Pergi ke Simpan Data Sebarang Jenis?
Melaksanakan Penunjuk Void dalam Go
Dalam Go, ketiadaan penunjuk dan warisan tidak sah boleh menimbulkan cabaran apabila cuba mencipta struktur data yang boleh menyimpan nilai apa-apa jenis. Walau bagaimanapun, terdapat penyelesaian yang memanfaatkan konsep antara muka kosong:
interface{}
Menurut Spesifikasi Bahasa Pengaturcaraan Go, setiap jenis melaksanakan antara muka kosong, bermakna ia boleh mewakili sebarang jenis. Dengan mengisytiharkan pembolehubah atau medan struktur bagi antara muka jenis{}, anda boleh menyimpan nilai apa-apa jenis dengan berkesan di lokasi itu.
Teknik ini menyediakan kefungsian yang serupa dengan penunjuk void C, membolehkan anda mengendalikan nilai jenis arbitrari tanpa perlu mengisytiharkan jenis tertentu. Sebagai contoh, pertimbangkan contoh berikut:
type DataStore struct { Data []interface{} } func (ds *DataStore) Add(value interface{}) { ds.Data = append(ds.Data, value) } func main() { ds := &DataStore{} ds.Add("Hello") ds.Add(42) ds.Add(struct{ Name string }{Name: "Alice"}) // Print the stored values for _, v := range ds.Data { fmt.Println(v) } }
Dalam contoh ini, struct DataStore mengandungi sepotong nilai antara muka{}. Kami kemudiannya boleh menambah nilai pelbagai jenis secara dinamik ke dalam kepingan ini menggunakan kaedah Tambah. Fungsi utama menunjukkan cara menyimpan dan mencetak nilai pelbagai jenis dalam DataStore kami.
Sejak Go 1.18, alias untuk antara muka{} dipanggil mana-mana tersedia, menyediakan trengkas yang mudah:
type DataStore struct { Data []any }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensimulasikan Penunjuk Kekosongan dalam Pergi ke Simpan Data Sebarang Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!