Questions marquées «go-reflect»

387
Comment trouver le type d'un objet dans Go?

Comment trouver le type d'un objet dans Go? En Python, j'utilise juste typeofpour récupérer le type d'objet. De même dans Go, existe-t-il un moyen de mettre en œuvre la même chose? Voici le conteneur à partir duquel j'itère: for e := dlist.Front(); e != nil; e = e.Next() { lines := e.Value...

194
Type de conversion de tranches d'interfaces

Je suis curieux de savoir pourquoi Go ne se convertit []Tpas implicitement en []interface{}quand il se convertira implicitement Ten interface{}. Y a-t-il quelque chose de non trivial dans cette conversion qui me manque? Exemple: func foo([]interface{}) { /* do something */ } func main() { var a...

108
Parcourez les champs d'une structure dans Go

Fondamentalement, le seul moyen (que je connaisse) d'itérer les valeurs des champs de a structest comme ceci: 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...

101
Comment obtenir le nom d'une fonction dans Go?

Étant donné une fonction, est-il possible d'obtenir son nom? Dire: func foo() { } func GetFunctionName(i interface{}) string { // ... } func main() { // Will print "name: foo" fmt.Println("name:", GetFunctionName(foo)) } On m'a dit que runtime.FuncForPC aiderait, mais je n'ai pas compris comment...

96
range over interface {} qui stocke une tranche

Compte tenu du scénario où vous avez une fonction qui accepte t interface{}. S'il est déterminé que le test une tranche, comment puis-je rangesur cette tranche? func main() { data := []string{"one","two","three"} test(data) moredata := []int{1,2,3} test(data) } func test(t interface{}) { switch...