为了账号安全,请及时绑定邮箱和手机立即绑定

将片中的所有元素替换为 “?”/用 ?创建字符串,表示切片中的任意多个元素

将片中的所有元素替换为 “?”/用 ?创建字符串,表示切片中的任意多个元素

Go
哈士奇WWW 2022-09-26 20:20:20
我正在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, ",") // => "?,?,?,?"


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号