Perguntas com a marcação «go-reflect»

387
Como encontrar o tipo de um objeto no Go?

Como encontro o tipo de um objeto no Go? No Python, eu apenas uso typeofpara buscar o tipo de objeto. Da mesma forma, no Go, existe uma maneira de implementar o mesmo? Aqui está o contêiner do qual estou iterando: for e := dlist.Front(); e != nil; e = e.Next() { lines := e.Value...

194
Tipo de conversão de fatias de interfaces

Estou curioso para saber por que o Go não se converte implicitamente []Tem []interface{}quando implicitamente se converte Tem interface{}. Há algo não trivial nessa conversão que estou perdendo? Exemplo: func foo([]interface{}) { /* do something */ } func main() { var a []string =...

131
Como comparar se duas estruturas, fatias ou mapas são iguais?

Quero verificar se duas estruturas, fatias e mapas são iguais. Mas estou tendo problemas com o seguinte código. Veja meus comentários nas linhas relevantes. package main import ( "fmt" "reflect" ) type T struct { X int Y string Z []int M map[string]int } func main() { t1 := T{ X: 1,...

107
Itere pelos campos de uma estrutura no Go

Basicamente, a única maneira (que eu conheço) de iterar por meio dos valores dos campos de a structé assim: 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...

101
Como obter o nome de uma função no Go?

Dada uma função, é possível obter seu nome? Dizer: func foo() { } func GetFunctionName(i interface{}) string { // ... } func main() { // Will print "name: foo" fmt.Println("name:", GetFunctionName(foo)) } Disseram-me que o runtime.FuncForPC ajudaria, mas não consegui entender como...