Als «go-reflect» getaggte Fragen

14
Wie finde ich den Typ eines Objekts in Go?
Wie finde ich den Typ eines Objekts in Go? In Python rufe ich nur typeofden Objekttyp ab. Gibt es in Go eine Möglichkeit, dasselbe zu implementieren? Hier ist der Container, aus dem ich iteriere: for e := dlist.Front(); e != nil; e = e.Next() { lines := e.Value fmt.Printf(reflect.TypeOf(lines)) } …
387 go  go-reflect 


6
Geben Sie konvertierende Schnittstellenschnitte ein
Ich bin neugierig , warum implizit Go does't konvertieren []Tzu , []interface{}wenn es implizit konvertieren Tzu interface{}. Gibt es etwas nicht Triviales an dieser Konvertierung, das mir fehlt? Beispiel: func foo([]interface{}) { /* do something */ } func main() { var a []string = []string{"hello", "world"} foo(a) } go build …


3
Durchlaufen Sie die Felder einer Struktur in Go
Grundsätzlich ist die einzige Möglichkeit (die ich kenne), die Werte der Felder von a zu durchlaufen, structwie folgt: type Example struct { a_number uint32 a_string string } //... r := &Example{(2 << 31) - 1, "...."}: for _, d:= range []interface{}{ r.a_number, r.a_string, } { //do something with the d …
107 go  go-reflect 

2
Wie legen Sie mit Reflect den Wert eines Strukturfelds fest?
Es ist schwierig, mit Strukturfeldern mithilfe eines reflectPakets zu arbeiten. Insbesondere habe ich nicht herausgefunden, wie der Feldwert eingestellt werden soll. Typ t struct {fi int; fs string} var rt = t {123, "jblow"} var i64 int64 = 456 Name des Feldes i bekommen - das scheint zu funktionieren var …

2
Wie erhalte ich den Namen einer Funktion in Go?
Ist es bei einer gegebenen Funktion möglich, ihren Namen zu erhalten? Sagen: func foo() { } func GetFunctionName(i interface{}) string { // ... } func main() { // Will print "name: foo" fmt.Println("name:", GetFunctionName(foo)) } Mir wurde gesagt, dass runtime.FuncForPC helfen würde, aber ich verstand nicht, wie man es benutzt.

3
Bereich über Schnittstelle {}, in der ein Slice gespeichert ist
In Anbetracht des Szenarios, in dem Sie eine Funktion haben, die akzeptiert t interface{}. Wenn festgestellt wird, dass es sich um tein Slice handelt, wie gehe ich dann rangeüber dieses Slice hinaus? func main() { data := []string{"one","two","three"} test(data) moredata := []int{1,2,3} test(data) } func test(t interface{}) { switch reflect.TypeOf(t).Kind() …

3
Greifen Sie über den Namen auf die struct-Eigenschaft zu
Hier ist ein einfaches Go-Programm, das nicht funktioniert: package main import "fmt" type Vertex struct { X int Y int } func main() { v := Vertex{1, 2} fmt.Println(getProperty(&v, "X")) } func getProperty(v *Vertex, property string) (string) { return v[property] } Error: prog.go: 18: ungültige Operation: v [Eigenschaft] (Index vom …
75 go  go-reflect 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.