登录
首页 >  Golang >  Go问答

为何在 golang 中 protobuf 使用 byte 而其他语言使用 string/ByteString 表示字节?

来源:stackoverflow

时间:2024-02-23 21:42:21 376浏览 收藏

本篇文章向大家介绍《为何在 golang 中 protobuf 使用 byte 而其他语言使用 string/ByteString 表示字节?》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

如此处指定https://developers.google.com/protocol-buffers/docs/proto3#scalar

protobuf 在 golang 中使用 byte[] 表示字节,而在其他语言中使用 string/ByteString 表示字节,为什么不同?

正如@Volker所解释的,字符串不适合保存任意[]字节。

那么为什么 pb 在除 go 之外的所有其他语言中使用 string/ByteString 来表示字节?


正确答案


  • []byte 对于字节流来说是自然的
  • Go 中的字符串不是字节流,而是不可变字符串
  • Go 中的字符串应该是 UTF-8 编码的,至少这是 for-range 所假设的,在字符串中使用非 UTF-8 字节流是可能的,但有点不优雅。
  • Go 中没有 ByteString 类型。嗯,实际上有:[]byte。

理论要掌握,实操不能落!以上关于《为何在 golang 中 protobuf 使用 byte 而其他语言使用 string/ByteString 表示字节?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>