go interface{}型別轉換

娃哈哈、發表於2020-12-21

go interface{}型別轉換


目錄

  1. 檢視interface{}型別
  2. 還原interface{}的原型別

1. 檢視interface{}型別

func checkType(i interface{}) {
	reflect.TypeOf(i)
}

2. 還原interface{}的原型別

  1. 通過switch判斷interface{}型別,然後通過 xxx.(型別) 強轉
type Person struct {
	name string
	age  int
}

func checkType(i interface{}) {
	switch v := i.(type) { //這裡是通過i.(type)來判斷是什麼型別  下面的case分支匹配到了 則執行相關的分支
	case int:
		fmt.Printf("%v is an int\n", v)
	case string:
		fmt.Printf("%v is string", v)
	case Person:
		fmt.Println("Person", reflect.TypeOf(i))
		i2 := i.(Person) //將 i 強轉為 Person
		fmt.Println(i2.name)
	case bool:
		fmt.Printf("%v is bool", v)
	}
}

func main() {
	var info Person
	info.name = "zs"
	info.age = 20
	checkType(info)
}

相關文章