zoukankan      html  css  js  c++  java
  • Go语言:变参函数

    变参函数:

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

    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]

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

  • 相关阅读:
    SVN使用教程总结
    学习duilib库过程中的笔记
    duilib库使用(一)-- 编译生成依赖库
    在Windows服务进程中启动需管理员权限(带盾牌图标)的应用程序
    如何在Windows服务程序中读写HKEY_CURRENT_USER注册表
    vs2015 编译boost库
    NSIS 打包工具使用
    C 读文件
    常用的字符转化的方法
    C# 中对于json的解析小结
  • 原文地址:https://www.cnblogs.com/chase-wind/p/5644838.html
Copyright © 2011-2022 走看看