请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

类型断言

老师你好,通知上传合并函数里有如下代码:

k := string(data[i].([]byte))

请问不可以直接断言为string吗?我看其他地方也有类似用法。

正在回答

1回答

同学你好, 欢迎举个例子来拍砖哈.

断言需要结合实际来做类型检查, 这里的data[i]不是从string转换而来的{}interface类型, 直接断言为string应该是会失败的. 我们可以这样测试一下:

fmt.Println(reflect.TypeOf(data[i]))
k := data[i].(string)

输出结果为:

[]uint8
panic: interface conversion: interface {} is []uint8, not string

如果不想panic, 可以这样使用断言:

k, ok := data[i].(string)
if !ok {
    // do something...
}
0 回复 有任何疑惑可以回复我~
  • 提问者 阿斯顿_马丁 #1
    好的哈!非常感谢!
    回复 有任何疑惑可以回复我~ 2019-04-03 15:45:20

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信