以下C代码的golang等效项是什么?
fwrite(&E, sizeof(struct emp), n, f);
我尝试使用
[]byte(i)
进行转换,但这似乎行不通。
答案 0 :(得分:6)
您可以使用“编码/二进制”包:
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")
}
}
答案 1 :(得分:4)
您不应这样做,只需使用支持自动序列化和反序列化的序列化格式即可。 Go的标准库支持:
Gob:对结构进行二进制编码。当您不希望与其他语言互换时推荐使用。 https://golang.org/pkg/encoding/gob/
JSON:Welp,您知道...如果需要与其他语言交换序列化数据。 https://golang.org/pkg/encoding/json/
XML:如果您感到复古。
当然,如果您想要与其他语言(不支持json的类型)进行安全互换,则protobuf是另一个可以考虑的选择。 https://github.com/golang/protobuf