Maison > développement back-end > Golang > Comment puis-je simuler des pointeurs vides dans Go to Store pour stocker des données de tout type ?

Comment puis-je simuler des pointeurs vides dans Go to Store pour stocker des données de tout type ?

Mary-Kate Olsen
Libérer: 2024-12-23 04:15:38
original
689 Les gens l'ont consulté

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

Implémentation d'un pointeur vide dans Go

Dans Go, l'absence de pointeurs vides et d'héritage peut poser un défi lors de la tentative de création de structures de données qui peut contenir des valeurs de tout type. Cependant, il existe une solution qui exploite le concept de l'interface vide :

interface{}
Copier après la connexion

Selon la spécification du langage de programmation Go, chaque type implémente l'interface vide, ce qui signifie qu'il peut représenter n'importe quel type. En déclarant une variable ou un champ de structure de type interface{}, vous pouvez stocker efficacement des valeurs de n'importe quel type à cet emplacement.

Cette technique fournit des fonctionnalités similaires aux pointeurs vides de C, vous permettant de gérer des valeurs de types arbitraires sans besoin de déclarer des types spécifiques. Par exemple, considérons l'exemple suivant :

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)
    }
}
Copier après la connexion

Dans cet exemple, la structure DataStore contient une tranche de valeurs d'interface{}. Nous pouvons ensuite ajouter dynamiquement des valeurs de différents types dans cette tranche à l'aide de la méthode Add. La fonction principale montre comment stocker et imprimer des valeurs de différents types dans notre DataStore.

Depuis Go 1.18, un alias pour interface{} appelé any est disponible, fournissant un raccourci pratique :

type DataStore struct {
    Data []any
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal