版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33781658/article/details/85637940
go类型断言
在java中
有一个instanceof方法
用来判断一个对象是否为 某类型
比如
String str="abc"
boolean ok = str.instanceof(String.class)
Integer i = 123
boolean ok = i.instanceof(String.class)
这个时候
如果str是String,则返回true
如果i不是String,则返回false
那么在golang中
也有这样的一种判断类型的方式
但是它没有方法名字
是一种直接的语法
var str interface{}
str = "abc"
value, ok := str.(string)
fmt.Println(value, ok)
我们看这里,先定义一个interface{}
然后给它赋一个"abc"
现在虽然它有了一个值,是"abc"
但是它的类型 依然是 interface{}
所以这里的value返回的是"abc"
ok返回的是true,因为我们发现str的值是string类型
var str interface{}
str = 123
value, ok := str.(string)
fmt.Println(value, ok)
我们看这里
str的值是int
所以value返回一个""空字符串
ok返回的是false
再来看
str := "abc"
value, ok := str.(string)
这段代码会报错
因为这里的str的类型是string
只有interface{}才能使用类型断言
所以会报错