golang函数传参中可变参数和切片相互转化
可能遇到的一个问题(以golang操作mysql为例):
sqlStr := "insert into securitymanager.tests(id,name) values (?,?)" //要执行的sql语句
gg := []interface{}{1, "sd"} //要插入的数据的slice
//应该准备执行db.Exec(query string,args ...interface{})
1234
执行一个插入操作。Exec
要求传入的是可变参数。而我们只有要插入数据的一个切片
这时候应该怎么处理呢,参考如下:
func main() {
DBInit()
db := DBPool()
sqlStr := "insert into securitymanager.tests(id,name) values (?,?)"
gg := []interface{}{1, "sd"}
_, err := db.Exec(sqlStr, gg...)
if err != nil {
fmt.Println(err)
}
}
12345678910
以fmt包为例再举一个例子:
package main
import (
"fmt"
)
func main() {
qq := []interface{}{"DSd", "fds"}
hh(qq)
}
func hh(arg []interface{}) {
fmt.Printf("%v,%v", arg...)
}
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/08/09 03:09