golang runtime判断变量类型的三种方法

1. Using string formatting

[source lang=”c”]
func typeof(v interface{}) string {
return fmt.Sprintf("%T", v)
}
[/source]

2. Using reflect package

[source lang=”c”]
func typeof(v interface{}) string {
return reflect.TypeOf(v).String()
}
[/source]

3. Using type assertions

[source lang=”c”]
func typeof(v interface{}) string {
switch t := v.(type) {
case int:
return "int"
case float64:
return "float64"
//… etc
default:
_ = t
return "unknown"
}
}
[/source]

golang中,interface{} 是个好东西,类似于c中的void *,绝对是个好东西,值得好好体会。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注