Запитання з тегом «go-reflect»

14
Як знайти тип об’єкта в Go?
Як знайти тип об’єкта в Go? У Python я просто використовую typeofдля отримання типу об'єкта. Аналогічно в Go, чи є спосіб реалізувати те саме? Ось контейнер, з якого я повторюю: for e := dlist.Front(); e != nil; e = e.Next() { lines := e.Value fmt.Printf(reflect.TypeOf(lines)) } Я не в змозі …
387 go  go-reflect 


6
Введіть перетворювальні фрагменти інтерфейсів
Мені цікаво , чому Go does't неявно перетворити []Tв []interface{}коли він буде неявно перетворити Tв interface{}. Чи є щось нетривіальне в цьому перетворенні, чого я пропускаю? Приклад: func foo([]interface{}) { /* do something */ } func main() { var a []string = []string{"hello", "world"} foo(a) } go build скаржиться не …

5
Як порівняти, якщо дві структури, фрагменти чи карти рівні?
Я хочу перевірити, чи дві структури, фрагменти та карти рівні. Але у мене виникають проблеми із наступним кодом. Дивіться мої коментарі у відповідних рядках. package main import ( "fmt" "reflect" ) type T struct { X int Y string Z []int M map[string]int } func main() { t1 := T{ …
131 go  go-reflect 

3
Ітерація через поля структури в Go
В основному, єдиний спосіб (про який я знаю) пройти через значення полів a structтакий: 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
Як відобразити, як ви встановлюєте значення структури структури?
маючи орієнтовний час роботи з полями структури за допомогою reflectпакету. зокрема, не з'ясували, як встановити значення поля. наберіть t структура {fi int; fs string} var rt = t {123, "jblow"} var i64 int64 = 456 отримання назви поля i - це, здається, працює var field = reflect.TypeOf(r).Field(i).Name отримання значення поля …

2
Як отримати назву функції в Go?
Враховуючи функцію, чи можна отримати її назву? Сказати: func foo() { } func GetFunctionName(i interface{}) string { // ... } func main() { // Will print "name: foo" fmt.Println("name:", GetFunctionName(foo)) } Мені сказали, що runtime.FuncForPC допоможе, але я не зрозумів, як ним користуватися.

3
діапазон інтерфейсу {}, в якому зберігається фрагмент
Враховуючи сценарій, коли у вас є функція, яка приймає t interface{}. Якщо визначено, що tце фрагмент, як мені rangeперевищити цей фрагмент? 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? for _,value …

3
Доступ до властивості struct за іменем
Ось проста програма go, яка не працює: 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] } Помилка: prog.go: 18: недійсна операція: v [властивість] (індекс типу * …
76 go  go-reflect 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.