我想将符号添加到查询格式中。我应该如何添加它?

huangapple go评论79阅读模式
英文:

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.Sprintfstrings.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 (
	&quot;fmt&quot;
	&quot;strconv&quot;
	&quot;strings&quot;
)

type SqlArr []int64

func (a SqlArr) String() string {
	ans := strings.Builder{}
	for i := 0; i &lt; len(a); i++ {
		ans.WriteString(strconv.FormatInt(a[i], 10))
		if i != len(a)-1 {
			ans.WriteRune(&#39;,&#39;)
		}
	}
	return ans.String()
}

func Test(ids SqlArr) {
	deleteFmt := fmt.Sprintf(`DELETE FROM todos WHERE id IN (%s)`, ids)
	fmt.Printf(&quot;%v\n&quot;, deleteFmt)
}

func main() {
	Test([]int64{1, 2, 3})
}

huangapple
  • 本文由 发表于 2022年10月31日 16:26:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/74260523.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定