Como encontro o tipo de um objeto no Go? No Python, eu apenas uso typeof
para 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
fmt.Printf(reflect.TypeOf(lines))
}
Eu não sou capaz de obter o tipo de linhas de objeto neste caso, que é uma matriz de seqüências de caracteres.
go
go-reflect
Rahul
fonte
fonte
fmt.Printf("%T\n", var)
Respostas:
O pacote de reflexão Go possui métodos para inspecionar o tipo de variáveis.
O trecho a seguir imprimirá o tipo de reflexão de uma sequência, número inteiro e número flutuante.
Resultado:
veja: http://play.golang.org/p/XQMcUVsOja para visualizá-lo em ação.
Mais documentação aqui: http://golang.org/pkg/reflect/#Type
fonte
Eu encontrei 3 maneiras de retornar o tipo de uma variável em tempo de execução:
Usando formatação de string
Usando refletir pacote
Usando asserções de tipo
Todo método tem um melhor caso de uso diferente:
formatação de string - pegada curta e baixa (não é necessário importar o pacote refletido)
pacote refletir - quando precisarmos de mais detalhes sobre o tipo, teremos acesso aos recursos completos de reflexão
asserções de tipo - permite agrupar tipos, por exemplo, reconhecer todos os tipos int32, int64, uint32, uint64 como "int"
fonte
t
, entãot := v.(type)
se tornav.(type)
e_ = t
não é mais necessária.case 'T': p.fmt.fmtS(reflect.TypeOf(arg).String())
. pacote fmt usando refletir para imprimir o tipoUse o pacote de reflexão :
Produz:
Parque infantil
Exemplo usando
ValueOf(i interface{}).Kind()
:Produz:
Parque infantil
fonte
if reflect.TypeOf(err) == string
?Para obter uma representação de string:
De http://golang.org/pkg/fmt/
Saídas:
fonte
Eu ficaria longe da reflexão. pacote. Em vez disso, use% T
fonte
A melhor maneira é usar o conceito de reflexão no Google.
reflect.TypeOf
dá tipo junto com o nome do pacotereflect.TypeOf().Kind()
dá tipo sublinhadofonte
Para ser breve, use
fmt.Printf("%T", var1)
ou suas outras variantes no pacote fmt.fonte
Você pode verificar o tipo de qualquer variável / instância em tempo de execução, usando a
TypeOf
função de pacotes "reflect" ou usandofmt.Printf()
:fonte
Para obter o tipo de campos em struct
Resultado
Veja no IDE https://play.golang.org/p/bwIpYnBQiE
fonte
você pode usar
reflect.TypeOf
.int
,string
): ele irá retornar o seu nome (por exemplo:int
,string
)<package name>.<struct name>
(por exemplomain.test
:)fonte
Se tivermos essas variáveis:
fonte
Você pode usar:
interface{}..(type)
como neste playgroundfonte
refletir pacote vem para resgatar:
Veja esta demonstração
fonte
Você pode simplesmente usar o método fmt package fmt.Printf (), mais informações: https://golang.org/pkg/fmt/
exemplo: https://play.golang.org/p/aJG5MOxjBJD
fonte