[Introduction]Golang语法糖"..."全部用法

3,817 阅读1分钟

参数赋值

主要用于函数传参时参数不定的情况

例子:

// 可变参数传参
package main

import "log"

func test(args ...string) { // 可以接受任意个string参数
    for _, v:= range args{
        log.Println(v)
    }
}

func main(){
    var arr = []string{
        "ele1",
        "ele2",
        "ele3",
    }
    test(arr...) // 切片被打散传入
}

// 打印结果:
// ele1
// ele2
// ele3

切片解构

语法糖,将切片打散进行传递。可以实现优雅的合并两个数组,否则需要for循环一个一个元素实现数组合并

例子:

package main

import (
	"log"
)

func main() {
   var arr1 = []string{
        "ele1",
        "ele2",
        "ele3",
    }
    var arr2= []string{
        "ele4",
        "ele5",
    }
    arr1 = append(arr1,arr2...) // arr2的元素被打散一个个append进arr1
    log.Println(arr1)
}

// 打印结果 : [ele1 ele2 ele3 ele4 ele5]

其他

未知个数的数组声明:

arr1 := [...]int {0,1,2,3,4,5,6,7} 
arr2 := []int {0,1,2,3,4,5,6,7} // 等同于

参考文献

Go编程语言规范

Golang语言如何优雅的合并切片

Golang builtin