go - Go 中的 Java DataOutputStream 替代方案
问题描述
我在 Java 中有几行
out.write(223);
out.writeBytes("something");
out.writeInt(434);
到目前为止,我似乎没有DataOutputStream
在 Go 中找到 Java 的替代品,也没有找到与 .write .writebytes 类似的功能。写。我真的很感激一些帮助 :) 另外,如果你能向我展示如何连接到特定 IP 和端口并将字节、整数和其他数据输出到该 IP 的完整代码,那就太好了,比如DataOutputStream
.
解决方案
幸运的是,Go 有一个更细粒度的方法。
你encoding/binary
在 Go 的 stdlib 中有这个包,它能够将整数数据类型格式化为二进制文件——无论是小端(DataOutputStream
看起来是这样)还是大端。
从方法开始encoding/binary.LittleEndian.PutUint*
。他们将编码的字节放入一个切片中,然后您可以按照通常的方式编写它(见下文)。
Go 中所有能够“摄取字节”的东西都实现了特殊的接口io.Writer
;文件和 TCP 套接字也是如此。
因此,您将所谓的“字节”——不透明的字节块通常在 Go 中使用所谓的字节切片来操作[]byte
——直接写入任何实现io.Writer
. 要写入整数值,首先将其编码为字节切片,然后以相同的方式写入。
字符串是一个更有趣的话题。我在文档中没有提到DataOutputStream
它如何处理字符编码,所以我不知道该建议什么。不过,您可以通过调用辅助函数
将任何 Go 字符串写入 an 。io.Writer
io.WriteSting
关于你的
......如果你能告诉我关于如何......的完整代码,那就太好了......</p>
请阅读这个。
要开始,请执行以下操作:
这将使您掌握 90% 的必要知识。
其余的可以通过阅读Go 博客获得;特别是这些文章:
推荐阅读
- python - 如何在 Python 中解决此错误。一个文件夹中有多个文件,我需要根据文件名创建文件夹
- css - Css,Safari:悬停不会改变按钮颜色
- mysql - 访问子查询内的外部查询列时出现未知列错误
- actionscript-3 - 从 actionscript 到 siteminder SSO 的身份验证问题
- javascript - 如何在 google docs 按钮中换行?
- c - 合并中的段错误 - 在 C 中排序
- sql - 如何将 varchar 列中的日期字符串与 Oracle Sql 中输入的日期字符串进行比较?
- java - Python 中的多态 VS JAVA 中的多态
- visual-studio-2019 - Visual Studio 2019 任务运行器资源管理器 + Gulp 4
- go - 为什么 struct byteCounter 被视为“io.Writer”?