Write(w io.Writer, order ByteOrder, data interface{}) error 这个函数的作用是什么啊?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
先写入字符串长度,再写入字符串内容,是为了在读出的时候处理方便。
读入的时候,只要先读入长度,就能知道后面有多少个字符,因此可以据此分配内存。
在其他的高级语言中,你可能根本不需要考虑这些事情,因为它自动帮你做了。
但GO语言是稍微低级一些的语言,所以必须要自己考虑。