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

14
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() …
387 go  go-reflect 


6
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 = []string{"hello", "world"} foo(a) } go build …

5
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{ …
131 go  go-reflect 

3
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 with the …
107 go  go-reflect 


2
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 usá-lo.

3
alcance sobre a interface {} que armazena uma fatia
Dado o cenário em que você tem uma função que aceita t interface{}. Se for determinado que té uma fatia, como faço para rangesobre essa fatia? 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 …
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.