1 回答
TA貢獻1866條經驗 獲得超5個贊
您可以定義實現sql.Scanner接口的切片類型。請注意,當您將實現 Scanner 的類型的實例傳遞給(*sql.Rows).Scanor調用時,將自動調用(*sql.Row).Scanimpelmenter 的方法。Scan
type EventUserList []*EventUser
func (list *EventUserList) Scan(src interface{}) error {
if data, ok := src.([]byte); ok && len(data) > 0 {
if err := json.Unmarshal(data, list); err != nil {
return err
}
}
return nil
}
然后,假設e."eventUsers"select 查詢中的 是一個 json array,你可以像這樣使用它:
// EventUser struct
type EventUser struct {
ID int64
CheckedIn bool
PaidAmount float32
}
// Event struct
type Event struct {
ID int64 `json:"id"`
Name string `json:"name"`
StartTime string `json:"startTime"`
EventUsers EventUserList `json:"eventUsers"`
}
// ...
var events []*Event
for rows.Next() {
e := new(Event)
if err := rows.Scan(&e.ID, &e.Name, &e.StartTime, &e.EventUsers); err != nil {
return err
}
events = append(events, e)
}
- 1 回答
- 0 關注
- 123 瀏覽
添加回答
舉報
