Maison > développement back-end > Golang > Comment puis-je vider à la fois les propriétés et les méthodes d'une structure Go ?

Comment puis-je vider à la fois les propriétés et les méthodes d'une structure Go ?

Barbara Streisand
Libérer: 2024-12-30 19:18:15
original
239 Les gens l'ont consulté

How Can I Dump Both Properties and Methods of a Go Struct?

Méthodes de dumping des structures dans Golang

Bien que le package "fmt" de Golang fournisse une méthode "Printf" pour vider les propriétés d'une structure, il existe un besoin de récupérer à la fois les propriétés et les méthodes d’une structure. Prenons l'exemple suivant :

type Foo struct {
    Prop string
}
func (f Foo)Bar() string {
    return f.Prop
}
Copier après la connexion

Pour vérifier l'existence de la méthode "Bar()" dans une instance initialisée de type "Foo", pensez à utiliser le package "reflect". Voici comment procéder :

fooType := reflect.TypeOf(&Foo{})
for i := 0; i < fooType.NumMethod(); i++ {
    method := fooType.Method(i)
    fmt.Println(method.Name)
}
Copier après la connexion

Si votre objectif est de déterminer si un type implémente un ensemble de méthodes spécifique, les interfaces et les assertions de type pourraient être plus pratiques. Un exemple :

func implementsBar(v interface{}) bool {
    type Barer interface {
        Bar() string
    }
    _, ok := v.(Barer)
    return ok
}
Copier après la connexion

Pour tester une instance de "Foo" pour la méthode "Bar()" :

fmt.Println("Foo implements the Bar method:", implementsBar(Foo{}))
Copier après la connexion

Alternativement, pour affirmer explicitement qu'un type a certaines méthodes à temps de compilation :

var _ Barer = Foo{}
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