Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mensimulasikan Penunjuk Kekosongan dalam Pergi ke Simpan Data Sebarang Jenis?

Bagaimanakah Saya Boleh Mensimulasikan Penunjuk Kekosongan dalam Pergi ke Simpan Data Sebarang Jenis?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-23 04:15:38646semak imbas

How Can I Simulate Void Pointers in Go to Store Data of Any Type?

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!

Kenyataan:
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