我有一個(gè)使用 sql.DB 中的 NamedArgs 的查詢,并且在構(gòu)建時(shí)出現(xiàn)錯(cuò)誤cannot use args (type []sql.NamedArg) as type []interface {} in argument to stmt.ExecSQL 庫中的示例顯示它正在被使用:Example usage: db.ExecContext(ctx, ` delete from Invoice where TimeCreated < @end and TimeCreated >= @start;`, sql.Named("start", startTime), sql.Named("end", endTime), )唯一的區(qū)別是我目前正在使用準(zhǔn)備好的語句stmt并在其上調(diào)用Exec方法。我用我的值創(chuàng)建了一個(gè) NamedArg 切片,它正在使用...擴(kuò)展器。res, err := stmt.Exec(args...)sql.Named()當(dāng)示例直接在代碼中顯示方法調(diào)用時(shí),究竟出了什么問題?為什么擴(kuò)展切片不起作用?
1 回答

海綿寶寶撒
TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
這就是在 Go 中將參數(shù)傳遞給可變參數(shù)函數(shù)的工作原理。您要么傳遞可以是任何類型的單個(gè)值,要么傳遞一個(gè)元素類型與可變參數(shù)完全匹配的切片,并在其后面加上....
即你可以這樣做:
res, err := stmt.Exec(
sql.Named("start", startTime),
sql.Named("end", endTime),
)
或者你可以這樣做:
args := []interface{}{
sql.Named("start", startTime),
sql.Named("end", endTime),
}
res, err := stmt.Exec(args...)
- 1 回答
- 0 關(guān)注
- 189 瀏覽
添加回答
舉報(bào)
0/150
提交
取消