go 语言没有 typeof 类似的方法,所以只能依赖一些特定的语法。
- 使用 value, ok := var_name.(int|float64|string|boolean)来判断
- 使用 switch var_name.(type) {case...}来决策逻辑的执行
基本类型的判断
package main
import "fmt"
func main() {
var a interface {} = 12.3
switch a.(type) {
case int:
fmt.Println("int")
break;
case float64:
fmt.Println("float64")
}
// fmt.Println(value, ok)
}
结构体类型
package main
import "fmt"
type Shape struct {
height int
width int
}
func main() {
// var a interface {} = 12.3
var s interface {} = Shape{height: 1, width: 2}
// switch s.(type) {
switch s.(type) {
case int:
fmt.Println("int")
break;
case float64:
fmt.Println("float64")
case Shape:
fmt.Println("shape")
}
// fmt.Println(value, ok)
}