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

Go语言可变参数(变参函数)

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

  合适地使用可变参数,可以让代码简单易用,尤其是输入输出类函数,比如日志函数等。

  本文主要从4个实例介绍可变参数用法。

  程序代码:

package main

import (
    "bytes"
    "fmt"
)

/****************** 1 ****************
定义可参变数函数
形如...type格式的类型只能作为函数的参数类型存在,
并且必须是最后一个参数,它是一个语法糖(syntactic sugar),
即这种语法对语言的功能并没有影响,但是更方便程序员使用,
通常来说,使用语法糖能够增加程序的可读性,从而减少程序出错的可能
*/
func myfunc(args ...int) {
    for _, v := range args {
        fmt.Println(v)
    }
}

/****************** 2 ****************
任意类型的可变参数
用 interface{} 传递任意类型数据是Go语言的惯例用法,使用 interface{} 仍然是类型安全的
*/
func MyPrintf(args ...interface{}) {
    for _, arg := range args {
        switch arg.(type) {
        case int:
            fmt.Println(arg, "is an int value.")
        case string:
            fmt.Println(arg, "is an string value.")
        case int64:
            fmt.Println(arg, "is an int64 value.")
        default:
            fmt.Println(arg, "is an unknown value.")
        }

    }
}

/****************** 3 ****************
遍历可变参数列表——获取每一个参数的值
*/
func JoinStrings(slist ...string) string {
    //定义 一个字节缓冲,快速连接字符串
    var b bytes.Buffer
    for _, s := range slist {
        //将遍历的字节字符串写入字节数组
        b.WriteString(s)

    }
    //将连接好的字节数组转为字符串
    return b.String()
}

func rawPrint(slst ...interface{}) {
    for _, v := range slst {
        fmt.Println(v)
    }
}

/****************** 4 ****************
在多个可变参数函数中传递参数
如果要将这个含有可变参数的变量传递给下一个可变参数函数,可以在传递时给可变参数变量后面添加...
*/
func personPrint(slst ...interface{}) {
    rawPrint(slst...)
}

func main() {

    //定义可参变数函数
    myfunc(1, 7, 5)

    var v1 int = 1
    var v2 int64 = 234
    var v3 string = "hello"
    var v4 float32 = 1.23
    //任意类型的可变参数
    MyPrintf(v1, v2, v3, v4)
    //遍历可变参数列表——获取每一个参数的值
    fmt.Println(JoinStrings("ladies ", "and ", "gentlemen"))
    //在多个可变参数函数中传递参数
    personPrint(1, 3, 5)
}

 

  程序输出:

1
7
5
1 is an int value.
234 is an int64 value.
hello is an string value.
1.23 is an unknown value.
ladies and gentlemen
1
3
5

 


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
go recover让崩溃的程序继续执行发布时间:2022-07-10
下一篇:
Java 20年:转角遇到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