我一直在这个问题上四处寻找,但没有结果,而且谷歌也不是我平常的朋友。基本上我有一个结构数组(基本上是数据库记录),我想将其二进制写入文件。然而,无论我做什么,我得到的文件大小都是 0。我一定错过了一些明显的东西。这是代码:
type Record struct {
Next_record int64
Id uint32
First uint32
Item_len uint32
Item string
}
我创建了一个包含 100,000 条记录的数组,并已验证该数组包含有效记录。这是我用来编写数组的代码:
var recds []Record
file,err := os.OpenFile("test.bin",os.O_RDWR,0666)
defer file.Close()
if (err != nil) {
fmt.Println("error on bin file create",err)
return
}
wBuf := new(bytes.Buffer)
err = binary.Write(wBuf,binary.LittleEndian,&link)
if (err!=nil) {
fmt.Println("on binary write",err)
return
}
_,err = file.Write(wBuf.Bytes())
if (err!=nil) {
fmt.Println("error binary.writing value",err)
return
}
file.Close()
我尝试过 file.Create() 而不是 os.Open ,没有区别。我在代码中的任何调用上都没有收到错误。只是一个零长度文件。
任何见解将不胜感激。
来自
binary.Write
的文档:“数据必须是固定大小的值或固定大小值的切片,或者指向此类数据的指针。”
字符串不是固定大小的值,因此不能用
binary.Write
写入(直接或在结构内部)。