下面的C代码的golang等价物是什么?
fwrite(&E, sizeof(struct emp), n, f);
我试着用
[]byte(i)
来转换它,但这似乎行不通。
发布于 2020-03-05 09:25:35
您可以使用“编码/二进制”包:
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")
}
}
发布于 2018-07-12 07:56:20
您不应该这样做,只需使用支持自动序列化和反序列化的序列化格式即可。Go的标准库支持:
Gob: go结构的二进制编码。当你对与其他语言交流不感兴趣时,推荐使用。https://golang.org/pkg/encoding/gob/
JSON:好吧,你知道...如果您需要与其他语言交换序列化数据。https://golang.org/pkg/encoding/json/
XML:如果你有复古的感觉。
当然,如果您希望与其他语言进行类型安全的交换,那么protobuf是另一个需要考虑的选择,而json不支持这种交换。https://github.com/golang/protobuf
https://stackoverflow.com/questions/51300011
复制