golang中.([]byte)用法的含义是什么

新手上路,请多包涵

b, ok := val.([]byte)

如果是转换类型的话 不应该是 []byte(val) 吗 类似于 string(val)

阅读 5.8k
2 个回答

这不是转换类型,这种叫类型断言(type assertion),简单来说就是看val的类型是不是[]byte

有些val是不能直接用 []byte(val) 或者类似于 string(val)的。
首先如果val类型不确定,你使用类似于 string(val),编译都通不过。
如果你的val类型已经知道了,你就没必要执行 b, ok := val.([]byte) 了吧?

其次 b, ok := val.([]byte), 如果ok是true的时候,就代表成功,就可以使用b。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题