Go 类型断言是什么?

542 阅读1分钟

一、断言是什么?

断言是编程术语,表示为一些布尔表达。编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。简单的来理解断言的话就是判断的意思。所以在Go中类型断言我们就可以理解成对类型的判断。

二、类型断言

在Go中类型断言主要有两种形式

  • 变量.(类型)。例如:i.(int)
  • 变量,bool = 变量.(类型)。例如:num,ok = i.(int)。ok表示判断类型是否成功的意思。

举例: `

func main() {

var num interface{} = 10
i := num.(int)
fmt.Println("获取num的值:",i)
fmt.Println("获取num的类型:",reflect.TypeOf(i))

str := num.(string)
fmt.Println(str)
defer func() {
	if err := recover(); err != nil {
		fmt.Println(err)
	}
}()

} `

结果:

获取num的值: 10
获取num的类型: int
panic: interface conversion: interface {} is int, not string

goroutine 1 [running]:
main.main()
	D:/awesomeProject/assert/main.go:15 +0x1ad

从代码运行可以看出,类型断言可以获取变量的值、类型、以及对错误类型会抛出panic