192-go类型断言

版权声明:本文为博主原创文章,未经博主允许不得转载。 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{}才能使用类型断言
所以会报错



猜你喜欢

转载自blog.csdn.net/qq_33781658/article/details/85637940
今日推荐