zoukankan      html  css  js  c++  java
  • [Go] 函数/方法 的 变参

    变参 本质上就是一个切片。只能接收一个或多个同类型参数,且 必须放在参数列表的 尾部

    func test(s string, a ...int) {
        fmt.Printf("%T, %v
    ", a, a) // 显示类型 和 值
    }
    
    func main() {
        test("abc", 1, 2, 3, 4)
    }

    输出:

    []int, [1, 2, 3, 4]

    将切片作为变参时,须进行 展开操作(后面加“...”)。如果是数组,先将其转换为切片。

    func test(a ...int) {
        fmt.Println(a)
    }
    
    func main() {
        a := [3]int{10, 20, 30}
        test(a[:]...)
    }

    既然变参是切片,那么参数复制的仅是切片自身,并不包括底层数组,也因此可修改原数据。如果需要,可以用内置函数 copy() 复制底层数据。

    func test(a ...int) {
        for i := range a {
            a[i] += 100
        }
    }
    
    func main() {
        a := []int{10, 20, 30}
        test(a...)
        
        fmt.Println(a)
    }

    输出:

    [110 120 130]
  • 相关阅读:
    cf 427D Match & Catch 后缀数组
    cf 244c Checkposts 强连通分量
    NSPredicate的学习
    正则表达式
    NavigationBar &UINavigationItem& toolbar方法汇总
    区块股票数量
    吃什么
    selenium
    laravel5
    vim golang dev
  • 原文地址:https://www.cnblogs.com/52php/p/6067782.html
Copyright © 2011-2022 走看看