golang templge range struct list

这篇博客旨在展示如何利用Golang的`text/template`库处理struct的列表,特别是应用在生成SQL插入语句的场景中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.目标

使用golang "text/template"库实现插入sql模板

1.实现示例

//结构体
type Person struct {
	Name string
	Age int32
}

//模板语句
var InsertPersonInfoSql = `
insert into {{.Table}} 
	(name, age, create_time)
values
{{ range $i, $e := .PersonList}}
	{{if eq $i 0}}
	('{{$e.Name}}', '{{$e.Age}}', now())
	{{else}}
	,('{{$e.Name}}', '{{$e.Age}}', now())
	{{end}}
{{end}}

//插入
func SavePersonInfo(personList []*Person ) (err error) {
	buf := new(bytes.Buffer)
	tmpl, _ := template.New("insert_person").Parse(InsertPersonInfoSql)
	tmpl.Execute(buf, &struct {
		Table string
		PersonList []*Person
	}{"bad_man", personList })
	fmt.Println("insert pic sql:", buf.String())
	_, err = mysql.DB.Exec(buf.String())
	if err != nil {
		fmt.Println("exec sql fail,", err)
	}
	return
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值