我正在Golang做我的第一個任務,因此這可能是一個愚蠢的問題。我遇到過這樣的情況:我需要動態創建一個查詢,該查詢采用()的參數,因此執行的“”數量相等。arrayslice?在這里:var reportIds []int // eg [1, 2, 3, 4]values := make([]interface{}, 0, len(reportIds))for key, _ := range reportIds { values = append(values, reportIds[key])}statement, _ := database.Prepare("DELETE FROM reports WHERE id IN ({??my_dynamic_question_marks??})")statement.Exec(values...)它適用于這些值,但我無法理解是否有一種干凈的方法將切片中的許多元素替換為“”,以便我可以將其轉換為字符串。我想出了這個想法,因為它看起來很干凈,但是任何用“ ”創建字符串的方法都可以工作(自然是最后一個沒有逗號的元素)。n?join?,slice當然,我可以在循環中實現計數器并動態構建字符串,但我想知道是否有更干凈或更“官方”的方式來做到這一點。for
1 回答

慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
您可以構建字符串的切片,然后將它們與 連接在一起,后者接受字符串的切片和分隔符:"?"strings.Join
var reportIds []int // eg [1, 2, 3, 4]
values := make([]interface{}, len(reportIds))
placeHolders := make([]string, len(reportIds))
for idx, reportID := range reportIds {
values[idx] = reportID
placeHolders[idx] = "?"
}
strings.Join(placeHolders, ",") // => "?,?,?,?"
- 1 回答
- 0 關注
- 99 瀏覽
添加回答
舉報
0/150
提交
取消