您想動態填充一個從查詢獲得的值並利用lows.scan()提取數據的切片。在這種情況下,您需要確定列的數量並創建一個切片以存儲值。
一個公共陷阱:嘗試使用反射來調用掃描()函數可能會導致意外結果。這是因為rows.scan()期望指向值,而簡單地傳遞接口{}值將導致nil引用。 solution:為了通過反射成功調用scan(),採用了雙片方法。第一個切片,值,保存實際數據,而第二片valueptrs則包含值中每個元素的指針。
查詢結果中的每一列,valuesptr中的指針映射到相應的元素在值。隨後,可以將Rows.Scan()可以用值為其參數調用,有效地填充值。接口{},count) valuesptrs:= make([]接口{},count) for lows.next(){ 對於I:=範圍列{ valuesptrs [i] =&values [i] } lows.scan(valuesptrs ...) 對於我,col:=範圍列{ val:=值[i] B,確定:= val。 ([]位元組) var V接口{} 如果(確定){ V =字符串(B) } 別的 { v = val } fmt.println(col,v) } } }
在此示例中,rows.scan()使用指針slice valuesptrs調用,並使用檢索到的數據填充了slice。然後,循環打印每個列名及其相應的值。免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3