• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go语言:变参函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

变参函数:

函数中形式参数的数目通常是确定的,在调用的时候要依次传入与形式参数对应的所有实际参数,但是在某些函数的参数个数可以根据实际需要来确定,这就是变参函数。

Go语言支持不定长变参,但是要注意不定长参数只能作为函数的最后一个参数,不能放在其他参数的前面。函数的声明如下:

Func functionName(variableArgumentName ... dateType) 返回值{

Body

}

不定长变参的实质就是一个切片,可以使用range遍历,例如:

Func f(args ...int){

For _,arg :=range args{

fmt.Println(arg)

}

}

 

我们熟知的fmt.Print()函数可以传递不同类型的参数,go语言规定,如果希望传递任意类型的变参,变参类型应该制定为空接口类型:interface{}.例如:

Func f(args ... Interface{}){

...

}

 

Go语言中,空接口可以指向任何数据对象,所以可以使用interface{}定义任意类型变量,同时interface{}也是类型安全的。

例:

package main

import (

"fmt"

)

func main() {

f(2, "Go", 8, "language", 'a', false, 'A', 3.14)

}

func f(args ...interface{}) {

var num = make([]int, 0, 6)

var str = make([]string, 0, 6)

var ch = make([]int32, 0, 6)

var other = make([]interface{}, 0, 6)

 

for _, arg := range args {

switch v := arg.(type) {

case int:

num = append(num, v)

case string:

str = append(str, v)

case int32:

ch = append(ch, v)

default:

other = append(other, v)

}

}

fmt.Println(num)

fmt.Println(str)

fmt.Println(ch)

fmt.Println(other)

}

输出:

[2 8]

[Go language]

[97 65]

[false 3.14]

    变参函数难度不大,多理解理解,跟着写写,然后自己尝试些几个变参函数就可以了


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go博客系统开源系统发布时间:2022-07-10
下一篇:
Why EdgeX 弃 Java 转 Go发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap