Questions marquées «go-reflect»

14
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 …
387 go  go-reflect 


6
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 []string = []string{"hello", …


3
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 the d } …
108 go  go-reflect 


2
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 l'utiliser.

3
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 reflect.TypeOf(t).Kind() { case reflect.Slice: // how do …
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.