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 *,绝对是个好东西,值得好好体会。