• golang(06)函数介绍


    原文链接  http://www.limerence2017.com/2019/09/11/golang11/#more

    函数简介

    函数是编程语言中不可缺少的部分,在golang这门语言中函数是一等公民。也是使用好golang的必备技能。
    看下golang函数的格式

    1
    2
    3
    func 函数名(函数参数)返回值类型{

    }

    一个简单的函数

    1
    2
    3
    func HelloFunc(str string) string{
    return str
    }

    该函数返回传入的字符串,函数调用如下

    1
    fmt.Println(Hello("Nice to meet you!"))

    返回多个返回值

    golang 允许函数返回多个返回值

    1
    2
    3
    4
    5
    6
    7
    8
    func Add(a int, b int) (ret int, err error) {
    if a < 0 || b < 0 {
    //不允许负数相加
    err = errors.New("should be non-negative numbers")
    return
    }
    return a + b, nil
    }

    函数返回两个数相加的结果和错误,下面调用这个函数

    1
    2
    3
    4
    5
    6
    res, err:=Add(100, 200) 
    if err != nil{
    fmt.Println("add error !")
    return
    }
    fmt.Println("add result is ", res)

    函数内部可以使用标签

    1
    2
    3
    4
    5
    6
    7
    8
    9
    func myfunc() {
    i := 0
    HERE:
    fmt.Println(i)
    i++
    if i < 10 {
    goto HERE
    }
    }

    goto会跳转到fmt.Println(n)处继续执行,达到i循环自增并输出的效果

    函数可变参数

    golang 中允许函数使用可变参数

    1
    2
    3
    4
    5
    6
    //不定参数
    func myfuncv(args ...int) {
    for _, arg := range args {
    fmt.Println(arg)
    }
    }

    可变参数的写法是参数名后加上…类型,我们调用一下这个函数

    1
    myfuncv(1,2,4,7,8)

    可变参数可以通过切片获取元素。再写一个函数

    1
    2
    3
    4
    5
    6
    func myfuncv3(args ...int) {
    //按原样传递
    myfuncv(args...)
    //按切片传递
    myfuncv(args[1:]...)
    }

    这个函数内部将参数用展开传递给myfuncv,args是一个切片,展开用…,这样myfuncv就可以继续处理了。
    下面来个复杂点的,带interface参数的函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    func MyPrintf(args ...interface{}) {
    for _, arg := range args {
    //interface 任意类型,
    //arg.(type)只能用于switch结构
    switch arg.(type) {
    case int:
    fmt.Println(arg, "is an int value.")
    case string:
    fmt.Println(arg, "is a string value.")
    case int64:
    fmt.Println(arg, "is an int64 value")
    default:
    fmt.Println(arg, "is an unknown type")
    }
    }
    }

    MyPrintf函数将参数args遍历后根据类型判断,做出相应输出。interface类型的变量后边加上.(type)就可以返回他的类型。接口的相关知识之后讲解。
    目前就介绍到此,我的公众号
    wxgzh.jpg

  • 相关阅读:
    如何在VIM中编辑并保存退出!!!
    MapReduce---数据清洗
    构建之法阅读笔记03
    人月神话阅读笔记03
    学习进度报告16
    大道至简阅读笔记03
    大道至简阅读笔记02
    个人总结
    大道至简阅读笔记01
    学习进度报告15
  • 原文地址:https://www.cnblogs.com/secondtonone1/p/11507511.html
Copyright © 2020-2023  润新知