Heim >Backend-Entwicklung >Golang >Wie kann ich ungültige Zeiger in Go-to-Store-Daten jeglicher Art simulieren?

Wie kann ich ungültige Zeiger in Go-to-Store-Daten jeglicher Art simulieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-23 04:15:38690Durchsuche

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

Implementieren eines Void-Zeigers in Go

In Go kann das Fehlen von Void-Zeigern und Vererbung eine Herausforderung darstellen, wenn versucht wird, Datenstrukturen zu erstellen das Werte jeglicher Art enthalten kann. Es gibt jedoch eine Lösung, die das Konzept der leeren Schnittstelle nutzt:

interface{}

Gemäß der Go-Programmiersprachenspezifikation implementiert jeder Typ die leere Schnittstelle, was bedeutet, dass er jeden Typ darstellen kann. Durch die Deklaration einer Variablen oder eines Strukturfelds vom Typ interface{} können Sie Werte jeden Typs effektiv an diesem Ort speichern.

Diese Technik bietet eine ähnliche Funktionalität wie die Void-Zeiger von C, sodass Sie Werte beliebiger Typen ohne verarbeiten können Es müssen bestimmte Typen deklariert werden. Betrachten Sie beispielsweise das folgende Beispiel:

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)
    }
}

In diesem Beispiel enthält die DataStore-Struktur ein Segment von Schnittstellen{}-Werten. Mit der Add-Methode können wir diesem Slice dann dynamisch Werte unterschiedlichen Typs hinzufügen. Die Hauptfunktion zeigt, wie Werte verschiedener Typen in unserem DataStore gespeichert und gedruckt werden.

Seit Go 1.18 ist ein Alias ​​für interface{} namens „any“ verfügbar, der eine praktische Abkürzung bietet:

type DataStore struct {
    Data []any
}

Das obige ist der detaillierte Inhalt vonWie kann ich ungültige Zeiger in Go-to-Store-Daten jeglicher Art simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn