详解golang中的不定参数


本文摘自php中文网,作者V,侵删。

不定参数是指函数传入的参数个数为不定数量。

一、函数定义

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

1

2

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

}

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

二、“...”

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

2.1 不定参数

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

2.2 解引用slice

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

1

YourFunc (YourSlice...)

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

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

三、遍历参数

下面我们来看一个实例:

1

2

3

4

5

6

7

8

9

10

11

12

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,然后是每个元素:

1

2

3

l is  [a b]

item: a

item: b

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

相关文章教程推荐:golang教程

以上就是详解golang中的不定参数的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

手撸golang go与微服务 saga模式之3

【博客大赛】浅析go切片与排序

关于golang中方法的receiver为指针和不为指针的区别

[系列] go - 统一定义 api 错误码

leetcode131 分割回文串 golang

golang interface接口深入理解

leetcode go

手撸golang 基本数据结构与算法 链表

golang 自然语言处理工具(gohanlp)

golang 能做前端吗?

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...