go - Go 中的 Java DataOutputStream 替代方案

标签 go serialization encoding dataoutputstream

我在 Java 中有几行

out.write(223);
out.writeBytes("something");
out.writeInt(434);
到目前为止,我似乎没有找到 Java DataOutputStream 的替代品。在 Go 中并没有找到与 .write .writebytes 类似的功能。写。我真的很感谢一些帮助 :) 另外,如果您能向我展示如何连接到特定 IP 和端口并输出 的完整代码,那就太好了。字节 , 整数和其他数据到该 IP,例如 DataOutputStream .

最佳答案

幸运的是,Go 有一个更细粒度的方法。
您有 encoding/binary Go 的 stdlib 中的包,它能够将整数数据类型格式化为二进制文件——无论是小端(DataOutputStream 似乎是这样做的)和大端。
encoding/binary.LittleEndian.PutUint* 开始方法。
他们将编码的字节放入一个 slice 中,然后您可以按照通常的方式编写它(见下文)。
Go 中所有能够“摄取字节”的东西都实现了特殊的接口(interface) io.Writer ;文件和 TCP 套接字也是如此。
所以你写了你所谓的“字节”——不透明的字节 block 通常使用所谓的字节 slice 来操作,[]byte , 在 Go 中——直接指向任何实现 io.Writer 的对象.
要写入整数值,首先将其编码为字节 slice ,然后以相同的方式写入。
字符串是一个更有趣的话题。我在 DataOutputStream 上的文档中没有看到任何提及关于它如何处理字符编码,所以我不知道该建议什么。
不过,您可以将任何 Go 字符串写入 io.Writer调用 io.WriteSting 辅助功能。

关于你的

… it would be great if you could show me the full code on how to …


请阅读this .
要开始,请执行以下操作:
  • 完成the Tour .
  • 阅读 "Effective Go" .

  • 这将使您掌握 90% 的必要知识。
    其余的可以通过阅读the Go Blog获得;特别是这些文章:
  • Go Slices: usage and internals
  • Arrays, slices (and strings): The mechanics of 'append'
  • Strings, bytes, runes and characters in Go
  • Constants .
  • 关于go - Go 中的 Java DataOutputStream 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62717233/

    相关文章:

    go - 在golang中的if条件的基础上重写一个变量类型

    go - 如何在go中添加时区以秒为单位获取时间

    go - golang 中的 smtp 问题( panic ,信号 SIGSEGV : segmentation violation)

    当客户端将对象发送到服务器时,Java 抛出错误,IDE 中没有错误/警告

    javascript - 如何用html和javascript显示原始图像数据?

    installation - golang : go install tries/usr/local instead of GOPATH

    java - 序列化和反序列化 Joda DateTime 对象

    java - session.setAttribute ("authManager",经理)抛出NotSerializedException

    c# - 如何处理 XML 中的非法字符

    python - 想了解 Scikit-Learn 中的编码算法