go-reflect- все статьи тега
Тип преобразования срезов интерфейсов в go
мне любопытно, почему go неявно преобразует []T до []interface{} когда он будет неявно преобразовать T до interface{}. Есть ли что-то нетривиальное в этом преобразовании, что мне не хватает? пример: func foo([]interface{}) { /* do something */ } func main() { var a []string = []string{"hello", "world"} foo(a) } go build жалуется не может использовать (type []string) в качестве интерфейса типа [] {} в аргументе функции и если я попытаюсь сделать это явно, то же самое:b := [ ...
Как получить имя функции в Go?
учитывая функцию, можно ли получить ее имя? Скажи: func foo() { } func GetFunctionName(i interface{}) string { // ... } func main() { // Will print "name: foo" fmt.Println("name:", GetFunctionName(foo)) } Мне сказали, что во время выполнения.FuncForPC поможет, но я не смог понять, как его использовать. ...
Как сравнить структуру, срез, карту равны?
Я хочу, чтобы проверить, что две структуры равны, но есть некоторые проблемы: package main import ( "fmt" "reflect" ) type T struct { X int Y string Z []int M map[string]int } func main() { t1 := T{ X:1, Y:"lei", Z:[]int{1,2,3}, M:map[string]int{ "a":1, "b":2, }, } t2 := T{ X:1, Y:"lei", Z:[]int{1,2,3}, M:map[string]int{ "a":1, "b":2, } ...