以下 C 代码的 golang 等价物是什么?
fwrite(&E, sizeof(struct emp), n, f);
Run Code Online (Sandbox Code Playgroud)
我尝试使用
[]byte(i)
Run Code Online (Sandbox Code Playgroud)
转换它,但这似乎行不通。
小智 8
您可以使用“编码/二进制”包:
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")
}
}
Run Code Online (Sandbox Code Playgroud)
您不应该这样做,只需使用支持自动序列化和反序列化的序列化格式即可。Go 的标准库支持:
Gob:结构体的二进制编码。当您对与其他语言的交流不感兴趣时推荐使用。https://golang.org/pkg/encoding/gob/
JSON:好吧,你知道...如果你需要与其他语言交换序列化数据。https://golang.org/pkg/encoding/json/
XML:如果你觉得复古。
当然 protobuf 是另一个要考虑的选择,如果您想与其他语言进行类型安全的交换,而 json 不支持。 https://github.com/golang/protobuf