go 语言类型判断

28 阅读1分钟

go 语言没有 typeof 类似的方法,所以只能依赖一些特定的语法。

  1. 使用 value, ok := var_name.(int|float64|string|boolean)来判断
  2. 使用 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)
}