… 用法
1.‘…’ 其实是go的一种语法糖。
它的第一个用法主要是用于函数有多个不定参数的情况,可以接受多个不确定数量的参数。
2.第二个用法是slice可以被打散进行传递
例子1:
其实可以理解为切片的变体
func test1(args ...string) { //可以接受任意个string参数 | |
for _, v:= range args{ | |
fmt.Println(v) | |
} | |
} | |
func test2(params []string) { //可以接受任意个string参数 | |
for _, v:= range params{ | |
fmt.Println(v) | |
} | |
} | |
func main() { | |
var strss= []string{"donglei1", "donglei2"} | |
test1(strss...) //切片被打散传入 | |
fmt.Println("-------------") | |
test2(strss) | |
os.Exit(300) | |
} | |
//返回结果 | |
donglei1 | |
donglei2 | |
------------- | |
donglei1 | |
donglei2 |
常用案例解释
当一个切片加上 … (a…) 相当于把一个切片打散成多个变量,每个变量是切片的一个元素
当…加上变量 (…a) 相当于把传过来的多个参数变量整合为一个 切片,名字叫做a
func main() { | |
strss1 := []string{ | |
"donglei1", | |
"donglei2", | |
} | |
var strss2= []string{ | |
"donglei3", | |
"donglei4", | |
} | |
strings := append(strss1, strss2...) | |
fmt.Println(strings) | |
strings2 := append(strings, "donglei5","donglei6") | |
fmt.Println(strings2) | |
os.Exit(300) | |
} | |
// | |
[donglei1 donglei2 donglei3 donglei4] | |
[donglei1 donglei2 donglei3 donglei4 donglei5 donglei6] |