golang的断言使用

golang断言的使用

golang 断言是 interface{}转换成具体类型使用,使用方法有两种:

1 直接接收转换后的类型

  • 1 正确赋值
var v interface{}
v = 1
v2:=v.(int)
fmt.Println(v2)

打印结果
image

  • 2 将nilinterface{}转换成int
var v interface{}
v2:=v.(int)
fmt.Println(v2)

打印会报错
image

  • 3 将 int 转换成 string
var v interface{}
v = 1
v2:=v.(string)
fmt.Println(v2)

打印也会报错
image

2 接收转换后的类型和状态

  • 1 正确赋值
var v interface{}
v = 1
v2,status:=v.(int)
fmt.Println(v2,status)

打印
image

  • 2 将nilinterface{}转换成int
var v interface{}
v2,status:=v.(int)
fmt.Println(v2,status)

打印不会报错
image

  • 3 将 int 转换成 string
var v interface{}
v  =1
v2,status:=v.(string)
fmt.Println(v2,status)

打印不会报错

image

3 优缺点

如果是已经知道类型并且保证有值,用第一种比较合适。如果不知道类型并且也不确定是否有值那么就只能使用第二种。并且推荐代码中使用第二种,如果只是为了比较里面的值那么推荐使用 fmt.Sprintf("%v",v2)转换成字符串比较

4 总结

断言在golang中使用还是比较频繁,所以根据自己的场景选择使用

posted @ 2022-05-23 09:53  不要摇头晃脑  阅读(50)  评论(0)    收藏  举报