golang函数传参中可变参数和切片相互转化

可能遇到的一个问题(以golang操作mysql为例):


sqlStr := "insert into securitymanager.tests(id,name) values (?,?)"   //要执行的sql语句
gg := []interface{}{1, "sd"}     //要插入的数据的slice
//应该准备执行db.Exec(query string,args ...interface{})

执行一个插入操作。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)
	}
}

以fmt包为例再举一个例子:

package main

import (
	"fmt"
)

func main() {
	qq := []interface{}{"DSd", "fds"}
	hh(qq)

}

func hh(arg []interface{}) {
	fmt.Printf("%v,%v", arg...)

}

你可能感兴趣的:(Go)