Write(w io.Writer, order ByteOrder, data interface{}) error 这个函数的作用是什么啊?

发布于 2021-11-24 02:46:16 字数 433 浏览 927 评论 1

func (w *binWriter) Write(v interface{}) {
    if w.err != nil {
        return
    }
    switch v.(type) {
    case string:
        s := v.(string)
        w.Write(int32(len(s)))
        w.Write([]byte(s))
    default:
        w.err = binary.Write(w.w, binary.LittleEndian, v)
有谁能帮我,看看binary.Write(w.w, binary.LittleEndian, v)这个函数到底是什么个意思,为什么在写入string类型时,要先写入大小,再写入字符,那他的内存是怎么安排,我看读出也是先读出个数,在read(),不是很明白用意。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伴我心暖 2021-11-24 09:07:46

先写入字符串长度,再写入字符串内容,是为了在读出的时候处理方便。
读入的时候,只要先读入长度,就能知道后面有多少个字符,因此可以据此分配内存。

在其他的高级语言中,你可能根本不需要考虑这些事情,因为它自动帮你做了。

但GO语言是稍微低级一些的语言,所以必须要自己考虑。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文