Pytania otagowane jako go-reflect

14
Jak znaleźć typ obiektu w Go?
Jak znaleźć typ obiektu w Go? W Pythonie po prostu używam typeofdo pobierania typu obiektu. Podobnie w Go, czy istnieje sposób na wdrożenie tego samego? Oto kontener, z którego iteruję: for e := dlist.Front(); e != nil; e = e.Next() { lines := e.Value fmt.Printf(reflect.TypeOf(lines)) } W tym przypadku nie …
387 go  go-reflect 


6
Wpisz konwertujące plastry interfejsów
Jestem ciekaw dlaczego Go does't niejawnie przekonwertować []Tdo []interface{}kiedy będzie niejawnie konwertować Tdo interface{}. Czy w tej konwersji brakuje czegoś nietrywialnego? Przykład: func foo([]interface{}) { /* do something */ } func main() { var a []string = []string{"hello", "world"} foo(a) } go build narzeka nie można użyć (typu [] ciągu) …


3
Iteruj przez pola struktury w Go
Zasadniczo jedyny sposób (jaki znam) na iterację wartości pól a structjest taki: 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 } Zastanawiałem się, czy istnieje lepszy …
108 go  go-reflect 

2
Jak ustawić wartość pola struct za pomocą funkcji Reflect?
ciężko pracować z polami struct przy użyciu reflectpakietu. w szczególności nie wymyślili, jak ustawić wartość pola. type t struct {fi int; fs string} var rt = t {123, "jblow"} var i64 int64 = 456 uzyskanie nazwy pola i - wydaje się, że działa var field = reflect.TypeOf(r).Field(i).Name uzyskanie wartości pola …

2
Jak uzyskać nazwę funkcji w Go?
Czy w przypadku danej funkcji można uzyskać jej nazwę? Mówić: func foo() { } func GetFunctionName(i interface{}) string { // ... } func main() { // Will print "name: foo" fmt.Println("name:", GetFunctionName(foo)) } Powiedziano mi, że runtime.FuncForPC może pomóc, ale nie rozumiałem, jak go używać.

3
zakres ponad interfejsem {}, który przechowuje wycinek
Biorąc pod uwagę scenariusz, w którym masz funkcję, która akceptuje t interface{}. Jeśli okaże się, że tjest to kawałek, jak mam rangego nadrobić? 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 I iterate here? …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.