加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang的...

发布时间:2020-12-16 18:21:15 所属栏目:大数据 来源:网络整理
导读:原文:http://www.jb51.cc/article/p-utakmtfd-bed.html 函数定义 首先来看如何定义一个不定参数的函数: func YourFun(v... interface {}){} 该函数定义,定义了一个接受任何数目任何类型参数的函数。这里特殊的语法是三个点“…”,在一个变量后面加上三个

原文:http://www.52php.cn/article/p-utakmtfd-bed.html

函数定义

首先来看如何定义一个不定参数的函数:

func YourFun(v... interface{}){
}

该函数定义,定义了一个接受任何数目任何类型参数的函数。这里特殊的语法是三个点“…”,在一个变量后面加上三个点后,表示从该处开始接受不定参数,不同于python,golang的不定参数如果将这里”interface{}” 替换成某一确定类型,那么其就只能接受该类型的不定参数。

三个点

上面我们看到有三个点”…”的特殊标记。那么这三个点”…”有啥作用呢?

不定参数

如上所述,在定义不定参数时,表示从该参数开始记录不定参数

解引用slice

当要传递若干个值到不定参数函数中得时候,可以手动书写每个参数,也可以将一个slice传递给该函数:

YourFunc (YourSlice...)

通过”…”可以将slice中得参数对应的传递给函数。相当于python中得“*args”

这里要注意的是,解引用slice目前只能在不定参数函数传递参数时使用,在其他地方使用会报错。

遍历参数

下面我们来看一个实例:

func P (v... string) {
for _,item := range v {
    fmt.Println("item:",item)
    }
}

func main() {

    var l []string
    l = append(l,"a")
    l = append(l,"b")
    fmt.Println("l is ",l)
    P(l...)
}

这里我们看到的结果是,首先一个完整的list,然后是每个元素:

l is  [a b]
item: a
item: b

通过配合使用for…range可以遍历不定参数v中得每个参数。这里我们将不定参数类型设为string,因此只能接受若干的string 类型的参数。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读