为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Mysql 填充 Struct 类型映射

如何从 Mysql 填充 Struct 类型映射

Go
繁华开满天机 2022-10-10 19:07:31
我是 Golang 的新手。这是我要加载的结构,问题是存在我不知道如何从 Mysql 填充的 map [string] ChannelSTtype StreamST struct {    Name     string    Channels map[string]ChannelST}type ChannelST struct {    Name             string    URL              string    OnDemand         bool    Debug            bool    Status           int    runLock          bool    codecs           []av.CodecData    sdp              []byte    signals          chan int    hlsSegmentBuffer map[int]SegmentOld    hlsSegmentNumber int    clients          map[string]ClientST    ack              time.Time
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

确切的答案很大程度上取决于您的数据库架构。我将尝试给出一个通用的答案。你可以走两种方式(据我所知):

  1. 使用在这方面做很多事情的库,比如sqlxgorm。这些库将查看结构和标签中导出的字段以自动填充它们。

  2. 使用标准的sql库,自己做所有事情。在这种情况下,您将需要使用该Rows.Scan函数自己填充结构。

无论如何,您的StreamST结构包含一个映射,它是一个集合,所以我假设您要连接两个表。在 GORM 中,您可以指定关系,库会考虑到这一点。虽然我不确定这是否也仅适用于切片或映射,因为 GORM 不知道将结构的哪个字段用作映射的索引。

使用标准库时,返回的行与 SQL 查询的结果完全相同,因此左表的字段将重复,因此您需要编写自己的逻辑来将此字段列表转换为正确的结构。

最后,您有许多自定义类型,例如av.CodecData. 如果这些对应于单个字段但采用自定义格式,您可以通过让这些结构实现sql.Scannerdriver.Valuer接口来实现自定义编码/解码。



查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号