Вопросы с тегом «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{ X: …
132 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 } Мне было интересно, …
108 go  go-reflect 

2
Как вы устанавливаете значение поля структуры с помощью функции «Отражение»?
трудно работать с полями структуры с помощью reflectpackage. в частности, не придумали, как задать значение поля. введите t struct {fi int; строка fs} var rt = t {123, "jblow"} var i64 int64 = 456 получение имени поля i - похоже, это работает var field = reflect.TypeOf(r).Field(i).Name получение значения поля i …

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? …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.