繁体   English   中英

如何将结构作为二进制数据写入golang中的文件?

[英]How to write a struct as binary data to a file in golang?

以下 C 代码的 golang 等价物是什么?

fwrite(&E, sizeof(struct emp), n, f);

我尝试使用

[]byte(i)

转换它,但这似乎行不通。

您可以使用“编码/二进制”包:

import "encoding/binary"

func dump() {
    f, err := os.Create("file.bin")
    if err != nil {
        log.Fatal("Couldn't open file")
    }
    defer f.Close()

    var data = struct {
        n1 uint16
        n2 uint8
        n3 uint8
    }{1200, 2, 4}
    err = binary.Write(f, binary.LittleEndian, data)
    if err != nil {
        log.Fatal("Write failed")
    }
}

您不应该这样做,只需使用支持自动序列化和反序列化的序列化格式即可。 Go 的标准库支持:

Gob:结构体的二进制编码。 当您对与其他语言的交流不感兴趣时​​推荐使用。 https://golang.org/pkg/encoding/gob/

JSON:好吧,你知道...如果你需要与其他语言交换序列化数据。 https://golang.org/pkg/encoding/json/

XML:如果你觉得复古。

当然 protobuf 是另一个要考虑的选择,如果您想与其他语言进行类型安全的交换,而 json 不支持。 https://github.com/golang/protobuf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM