我试图检查Go中结构的类型。这是我能提出的最佳方式。有没有更好的方法来做到这一点,最好不要初始化结构?
package main
import (
"fmt"
"reflect"
)
type Test struct{
foo int
}
func main() {
t := Test{5}
fmt.Println(reflect.TypeOf(t) == reflect.TypeOf(Test{}))
}
答案 0 :(得分:5)
键入断言:
package main
import "fmt"
type Test struct {
foo int
}
func isTest(t interface{}) bool {
switch t.(type) {
case Test:
return true
default:
return false
}
}
func main() {
t := Test{5}
fmt.Println(isTest(t))
}
答案 1 :(得分:2)
您可以通过"键入" nil
指针值reflect.TypeOf()
,并调用fmt.Println(reflect.TypeOf(t) == reflect.TypeOf((*Test)(nil)).Elem())
以获取指向值的类型。这不会分配或初始化类型的值(有问题),因为只使用了raw_input
指针值:
input()
在Go Playground上尝试。
P.S。这完全相同,但无法找到原文。