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
Barbara Streisandoriginal
2024-12-30 19:18:15227parcourir

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
}

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

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
}

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

fmt.Println("Foo implements the Bar method:", implementsBar(Foo{}))

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

var _ Barer = Foo{}

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!

Déclaration:
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