首页 > 解决方案 > Go 中的 Java DataOutputStream 替代方案

问题描述

我在 Java 中有几行

out.write(223);
out.writeBytes("something");
out.writeInt(434);

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

标签: goserializationencodingdataoutputstream

解决方案


幸运的是,Go 有一个更细粒度的方法。

encoding/binary在 Go 的 stdlib 中有这个包,它能够将整数数据类型格式化为二进制文件——无论是小端(DataOutputStream看起来是这样)还是大端。
从方法开始encoding/binary.LittleEndian.PutUint*。他们将编码的字节放入一个切片中,然后您可以按照通常的方式编写它(见下文)。

Go 中所有能够“摄取字节”的东西都实现了特殊的接口io.Writer;文件和 TCP 套接字也是如此。

因此,您将所谓的“字节”——不透明的字节块通常在 Go 中使用所谓的字节切片来操作[]byte——直接写入任何实现io.Writer. 要写入整数值,首先将其编码为字节切片,然后以相同的方式写入。

字符串是一个更有趣的话题。我在文档中没有提到DataOutputStream它如何处理字符编码,所以我不知道该建议什么。不过,您可以通过调用辅助函数
将任何 Go 字符串写入 an 。io.Writerio.WriteSting


关于你的

......如果你能告诉我关于如何......的完整代码,那就太好了......</p>

请阅读这个

要开始,请执行以下操作:

  1. 完成巡回赛
  2. 阅读“有效围棋”

这将使您掌握 90% 的必要知识。
其余的可以通过阅读Go 博客获得;特别是这些文章:


推荐阅读