專案中的dao層,我們用來查詢資料庫,獲取想要資料,有時我們會需要查詢資料給結構體賦值,并回傳一個結構體指標,如下
// 結構體欄位已與資料庫對應
func GetCommunity(id int) (community *model.CommunityDetail, err error) {
sql := `select community_id, community_name, introduction from community where community_id = ?`
err = db.Get(&community, sql, id)
if err != nil {
return
}
return
}
這樣的代碼看似沒有問題,但其實并不正確,運行結果如下

如果把&取地址符直接洗掉,那會直接變成空指標例外,
解決方法
出現上面的問題是因為在函式回傳值處,我們只是宣告了一個指標model.CommunityDetail型別的指標community,要使用這個指標給結構體賦值之前我們需要先對其進行初始化
func GetCommunity(id int) (community *model.CommunityDetail, err error) {
sql := `select community_id, community_name, introduction from community where community_id = ?`
// 初始化
community = new(model.CommunityDetail)
err = db.Get(community, sql, id)
if err != nil {
return
}
return
}
這樣我們就可以獲取到正確結果了

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539698.html
標籤:其他
上一篇:flask操作資料庫
下一篇:在微信上搭建ChatGpt機器人
