英文:
I would like to add Symbol to Query Format. How should I add it?
问题
func (s *TODOService) DeleteTODO(ctx context.Context, ids []int64) error {
const deleteFmt = `DELETE FROM todos WHERE id IN (%s)`
symbols := strings.Repeat("?, ", len(ids)-1) + "?"
query := fmt.Sprintf(deleteFmt, symbols)
return nil
}
我需要根据id列表的数量,将符号(这里是?
)添加到查询中,所以我想结合使用fmt.Sprintf
和strings.Repeat
函数来向提供的查询格式中添加符号。我应该如何添加它?
英文:
func (s *TODOService) DeleteTODO(ctx context.Context, ids []int64) error {
const deleteFmt = `DELETE FROM todos WHERE id IN (?%s)`
return nil
}
I need to add as many Symbols (here ?
) to the Query as the number of id lists, so I want to combine the fmt.Sprintf and strings.Repeat functions to add Symbols to the provided Query Format How should I add it?
答案1
得分: 1
ipml Stringer接口
package main
import (
"fmt"
"strconv"
"strings"
)
type SqlArr []int64
func (a SqlArr) String() string {
ans := strings.Builder{}
for i := 0; i < len(a); i++ {
ans.WriteString(strconv.FormatInt(a[i], 10))
if i != len(a)-1 {
ans.WriteRune(',')
}
}
return ans.String()
}
func Test(ids SqlArr) {
deleteFmt := fmt.Sprintf(`DELETE FROM todos WHERE id IN (%s)`, ids)
fmt.Printf("%v\n", deleteFmt)
}
func main() {
Test([]int64{1, 2, 3})
}
这段代码定义了一个名为SqlArr
的类型,它是一个整数切片。该类型实现了String()
方法,该方法将切片中的整数转换为字符串,并以逗号分隔。Test()
函数接受一个SqlArr
类型的参数,并使用该参数生成一个SQL语句。在main()
函数中,我们调用Test()
函数并传入一个包含三个整数的切片。
英文:
ipml Stringer interface
package main
import (
"fmt"
"strconv"
"strings"
)
type SqlArr []int64
func (a SqlArr) String() string {
ans := strings.Builder{}
for i := 0; i < len(a); i++ {
ans.WriteString(strconv.FormatInt(a[i], 10))
if i != len(a)-1 {
ans.WriteRune(',')
}
}
return ans.String()
}
func Test(ids SqlArr) {
deleteFmt := fmt.Sprintf(`DELETE FROM todos WHERE id IN (%s)`, ids)
fmt.Printf("%v\n", deleteFmt)
}
func main() {
Test([]int64{1, 2, 3})
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论