我是 Golang 的新手。這是我要加載的結構,問題是有映射 [string] ChannelST,我不知道如何從 Mysql 填充
type 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
uj5u.com熱心網友回復:
確切的答案很大程度上取決于您的資料庫架構。我將嘗試給出一個通用的答案。你可以有兩種方式(據我所知):
- 使用在這方面可以做很多事情的庫,例如sqlx或gorm。這些庫將查看結構和標簽中匯出的欄位以自動填充它們。
- 使用標準sql庫并自己完成所有操作。在這種情況下,您將需要使用該
Rows.Scan函式自己填充結構。
在任何情況下,您的StreamST結構都包含一個映射,它是一個集合,因此我假設您要連接兩個表。在 GORM 中,您可以指定關系,庫會考慮到這一點。雖然我不確定這是否僅適用于切片或地圖,因為 GORM 不知道將結構的哪個欄位用作地圖的索引。
使用標準庫時,回傳的行與 SQL 查詢的結果完全相同,因此您左表的欄位將重復,因此您需要撰寫自己的邏輯將這個欄位串列轉換為正確的結構。
最后,您有許多自定義型別,例如av.CodecData. 如果這些對應于單個欄位但采用自定義格式,您可以通過讓這些結構實作sql.Scanner和driver.Valuer介面來實作自定義編碼/解碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/347007.html
上一篇:MYSQLJSON按值排序
