我完全是新手,我正在try 读取一个二进制文件,一次读取一个字节或几个字节.文档帮助不大,我找不到任何教程或简单的示例(顺便说一下,Google怎么会给他们的语言起这样一个无法谷歌搜索的名称呢?)基本上,我如何打开一个文件,然后将一些字节读入缓冲区?有什么建议吗?

推荐答案

对于操纵文件,os软件包是你的朋友:

f, err := os.Open("myfile")
if err != nil {
   panic(err)
}
defer f.Close()

有关如何打开文件的更多控制,请参见os.OpenFile()而不是(doc).

读取文件的方法有很多种.os.Open返回的os.File类型(上例中的f)实现了io.Reader接口(它有一个具有正确签名的Read()方法),它可以直接用来读取缓冲区([]byte)中的一些数据,也可以包装在缓冲读取器(bufio.Reader类型)中.

具体地,对于二进制数据,encoding/binary包对于将字节序列读入某些类型化的数据 struct 可能是有用的.你可以在Go doc here里看到一个例子.binary.Read()函数可以与使用os.Open()函数读取的文件一起使用,因为正如我所提到的,它是io.Reader.

还有易于使用的io/ioutil包,它允许您一次读取一个字节片段中的整个文件(ioutil.ReadFile(),它接受文件名,因此您甚至不必自己打开/关闭文件),或者ioutil.ReadAll(),它接受io.Reader并返回包含整个文件的一段字节.这是doc on ioutil美元.

最后,正如其他人提到的,你可以用"golang"搜索围棋语言,你应该能找到你需要的所有东西.golang-nuts mailing list也是一个寻找答案的好地方(在发帖之前一定要先搜索,很多东西都已经有答案了).要查找第三方软件包,请查看godoc.org网站.

Go相关问答推荐

Golang regexpp:获取带有右括号的单词

Term~T中的类型不能是类型参数,但可以是引用类型参数的切片

Go协议缓冲区导入问题

一种基于时间的Golang函数节制器

Golang应用程序:所请求的资源上不存在HTTP-Control-Allow-Origin标头

GoFR HTTP服务初始化中Open遥测传输和超时配置的说明

Golang使用Run()执行的命令没有返回

如何从 nil 指针创建值

go-jwt 令牌验证错误 - 令牌签名无效:密钥类型无效

在 Go 中将元数据从一个 JPEG 复制到另一个

testcontainers:如何修复绑定源路径不存在

是否可以在调试期间在 VSCode 中预览 github.com/shopspring/decimal 值?

在本地 go 应用程序上获取秘密的正确策略

如何在 gocql 中设置最大池大小?

无法将 graphql-ws 连接到 gqlgen

使用 go.work 文件在多个测试文件上运行 go test 命令

如何使用struct的方法清除除某些字段之外的struct值

如何在循环中旋转图像以便在 golang 中创建 GIF?

go 堆栈跟踪:在某些函数调用参数或返回值之后的问题(?)标记是什么意思?

gob 解码器仅返回数组中的第一个元素