2016-08-15 1 views
1

Ich spiele mit Golang und ich möchte wissen, ob es einen Weg gibt, der alle Methoden oder Eigenschaften auflisten kann, die ich für eine Variable verwenden kann. In Ruby kann ich einfach some_variable.methods verwenden, um alle Methoden zu erhalten, die auf some_variable definiert sind. Gibt es in Golang eine ähnliche Sache?Wie lautet das Golang-Äquivalent zu Rubys Methode?

+2

Nun, Sie haben die Frage mit "Reflexion" markiert, so dass Sie zu wissen scheinen, wo Sie suchen sollten: 'Paket reflektieren'. Vor allem https://golang.org/pkg/reflect/#Value.Method. – Volker

Antwort

6

Ja, Sie können. Mit Reflection kann jedes Objekt reflect.Type alle Methoden auflisten, die der tatsächliche Typ darstellt. aber es ist nicht eine sehr häufige oder idiomatische Sache zu gehen:

import (
    "fmt" 
    "reflect" 
) 

type Foo struct { 
} 

func (f Foo) Bar() { 
} 

func (f Foo) Baz() { 
} 

func main() { 

    t := reflect.TypeOf(Foo{}) 
    for i := 0; i < t.NumMethod(); i++ { 
     fmt.Println(t.Method(i).Name) 
    } 
} 
// Output: 
// Bar 
// Baz 

Dies kann auch auf reflect.Value erfolgen, je nachdem, was Sie brauchen.

Aber die eigentliche Frage ist - was wollen Sie hier erreichen? Versuchen Sie zu überprüfen, ob ein Typ eine Schnittstelle oder etwas Ähnliches implementiert? Es gibt wahrscheinlich eine einfachere Lösung für Ihr Ziel. Was ist dein eigentliches Ziel?

+0

Danke. Ich möchte nur schnell alle Methoden oder Eigenschaften ansehen, die ich für eine Variable verwenden kann, während ich gerade Golang lerne. – user130268

+4

@ user130268 Die Dokumentation der Standardbibliothek ist eine bessere Lösung IMHO :) –

2

Wenn Sie nur in der Entwicklungsphase guru Entwicklungswerkzeug benötigen, kann Ihnen das sehr helfen.

Verwandte Themen