一、断言是什么?
断言是编程术语,表示为一些布尔表达。编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。简单的来理解断言的话就是判断的意思。所以在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