Golang有很多自己特殊的语法,学习时候,让我觉得很无奈,比如三个点“...”。很多时候我们只用“...”表示无奈。
这次我们不无奈,讲讲Golang里面“...”的作用。
第一个用法,函数不定量参数,举个例子:
package main
import "fmt"
func printall(args ... string) {
for _,v := range args {
fmt.Println(v)
}
}
func main() {
var strArr = [] string {
"Arthur",
"Guo",
"loves",
"Golang",
}
printall(strArr ... )
printall("a", "b","c")
//var strArr = [3] string {"111", "222", "333"} /* 定长数组,这么做不行 */
//dumpall(strArr)
}
// 输出结果
Arthur
Guo
loves
Golang
a
b
c
切记:函数定义时候需要写三个点“...”,函数调用时候如果给个切片,也要写三个点“...”。
第二个用法:类似第一个用法,声明数组时候表示不定长。
package main
import "fmt"
func main() {
var intArr = [...] int{1,2,3,4}
fmt.Println(intArr)
}
//输出结果:
[1, 2, 3, 4]
第三个用法:用于两个切片连接时候(非官方说法)。
举个栗子:
package main
import "fmt"
func main() {
var strArr1 = [] string {
"aaa",
"bbb",
"ccc",
}
var strArr2 = [] string {
"111",
"222",
"333",
}
strArr1 = append(strArr1, "ddd")
//strArr1 = append(strArr1, strArr2) /* 报错 */
strArr1 = append(strArr1, strArr2 ...)
fmt.Println(strArr1)
fmt.Println(strArr2)
}
//运行结果:
[aaa bbb ccc ddd 111 222 333]
[111 222 333]