📚 开源资源分享——颜佐光的个人书架
✉️ 联系站长
书架 / go / 语法

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

2020-08-09 11:09 · 约 730 字 · 浏览 2,579 次语法

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...)

}
← 返回《go》目录书架 →