gpt4 book ai didi

go - 将结构保存到二进制文件

转载 作者:行者123 更新时间:2023-12-01 22:13:54 25 4
gpt4 key购买 nike

我正在尝试将我的嵌套结构转换为二进制文件。
将来会有很多“房间”记录,因此在二进制文件中序列化结构是我认为的最佳方法。

package main

import (
"bytes"
"encoding/binary"
"log"
"time"
)

type House struct {
ID int
Floors int
Rooms []Room
}

type Room struct {
Width int
Height int
Description string
CreatedAt time.Time
}

func main() {
var house House = House{
ID: 1,
Floors: 3,
}

house.Rooms = append(house.Rooms, Room{Width: 20, Height: 30, CreatedAt: time.Now(), Description: "This is description"})
house.Rooms = append(house.Rooms, Room{Width: 14, Height: 21, CreatedAt: time.Now(), Description: "This is other description"})
house.Rooms = append(house.Rooms, Room{Width: 12, Height: 43, CreatedAt: time.Now(), Description: "This is other desc"})

log.Println(house)

buf := new(bytes.Buffer)
err := binary.Write(buf, binary.LittleEndian, house)
if err != nil {
log.Println(err)
}

}


但是我有错误:
-Binary.Write:main.House类型无效

有人可以帮我,因为我找不到解决方案。

最佳答案

根据binary.Write文档:

数据必须是固定大小的值或固定大小的值的 slice ,或者是指向此类数据的指针。

您的House结构不是固定大小的值。

您可以考虑分别编写/阅读HouseRoom。用于存储内部结构的House不得包含 slice ,因此您可以声明另一个用于从文件读取/写入的House结构。

您可以将对象存储为JSON,而不是二进制文件,这样就无需解决此问题。

关于go - 将结构保存到二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61841419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com