go语言中通过例子说明:类型断言
为啥这样写会报错
package main
import "fmt"
func main() {
var userInfo = make(map[string]interface{})
userInfo["name"] = "张三"
userInfo["age"] = 18
userInfo["hobby"] = []string{"篮球", "足球"}
fmt.Printf("第一个爱好:%v", userInfo["hobby"][0])
}
会报错;
userInfo["hobby"] 的类型是 interface{},相当于TS中的 any类型。
Go 不知道它底层其实是个 []string,
所以不能直接用 [0] 取下标。所以就会报错了
使用类型断言来解决这个问题
x.(T)
其中x是变量,T是期望的类型
package main
import "fmt"
func main() {
var userInfo = make(map[string]interface{})
userInfo["name"] = "张三"
userInfo["age"] = 18
userInfo["hobby"] = []string{"篮球", "足球"}
// 这里使用了类型断言 x.(T); x表示变量,T表示期望的类型
// 如果userInfo["hobby"]的类型是[]string;那么like表示[]string类型的值,ok表示类型断言是否成功
like, ok := userInfo["hobby"].([]string)
if ok {
fmt.Printf("第一个爱好:%v", like[0])
}
}
作者:流年少年
出处:https://www.cnblogs.com/ishoulgodo/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/ishoulgodo/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
支付宝
微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。

浙公网安备 33010602011771号