表示params可能是多个参数
func main() { eg("abc",99,"hello") } func eg(str string,params ... interface{}){ fmt.Println(str) // abc fmt.Println(params) // [99 hello] fmt.Println(params...) // 99 hello }组装时可按需过滤部分元素
var sts = []string{"o1", "p2", "q1", "r3"} fmt.Println(sts) // [o p q r] //去除包含"1"的元素,sts动态变化 for i := 0; i < len(sts); { if strings.Contains(sts[i], "1") { sts = append(sts[:i], sts[i+1:]...) } else { i++ } } fmt.Println(sts) //[p2 r3]应用场景:初始化sql脚本,多个文件,多行SQL
假如字符串str1和str2是两个文件中读出的几行sql(已转为string)
str1 := "INSERT INTO x(`id`,`name`)VALUES('1001','雨落山岚');" + "INSERT INTO x(`id`,`name`)VALUES('1002','雨落山岚1');" + "INSERT INTO x(`id`,`name`)VALUES('1003','雨落山岚11');" str2 := "INSERT INTO x(`id`,`name`)VALUES('1004','雨落山岚');" + "INSERT INTO x(`id`,`name`)VALUES('1005','雨落山岚1');" + "INSERT INTO x(`id`,`name`)VALUES('1006','雨落山岚11');" data5 := strings.SplitAfter(string(str1), ";") data5 = append(data5,strings.SplitAfter(string(str2), ";")...) //遍历data5执行SQL即可,此处只打印 for _, sql := range data5 { fmt.Println(sql) } //output: INSERT INTO x(`id`,`name`)VALUES('1001','雨落山岚'); INSERT INTO x(`id`,`name`)VALUES('1002','雨落山岚1'); INSERT INTO x(`id`,`name`)VALUES('1003','雨落山岚11'); INSERT INTO x(`id`,`name`)VALUES('1004','雨落山岚'); INSERT INTO x(`id`,`name`)VALUES('1005','雨落山岚1'); INSERT INTO x(`id`,`name`)VALUES('1006','雨落山岚11');