• 03 函数


    1. 函数定义

    import "errors"
    
    func Add(a int, b int) (ret int, err error) {
        if a < 0 || b < 0 {
            err = errors.New("必须是非负数")
        }
        return a + b, nil  // 支持多重返回    
    }

    多个参数值类型相同可以简写

    func Add(a, b int) int {
        return a + b
    }

    2. 函数调用

    //导入函数所在的包,然后直接调用即可
    import Mymath
    
    Mymath.Add(1, 2)

    3.不定参数

    func Myfunc(args ...int){            // ...int是一个语法糖,只能作为函数参数存在,且必须是最后一个
        for _, val := range(args){
             fmt.Println(val)
        }  
    }

    不定参数的传递

    func Myfunc(args ...int)  {
        for _, val := range(args) {
            fmt.Println(val)
        }
    }
    
    func Myfunc1(args ...int)  {
        Myfunc(args...)         // 将所有不定参数传递
    }
    
    func Myfunc2(args ...int)  {
        Myfunc(args[1:]...)   // 传递片段
    }

     任意类型的不定参数

    func Myprintf(args ...interface{})  {
        for _, val := range args{
            switch val.(type) {
            case int:
                fmt.Println(val, "int")
            case string:
                fmt.Println(val, "string")
            }
        }
    }

    3.多值返回

      

    func foo()(n int, l int)  {
        n = 1
        l = 2
        fmt.Println(n, l)
        return    //return不带任何值的时候,返回对应的返回值变量的值
    }
    
    func main()  {
        a, b := foo()
        fmt.Printf("in main a = %d   b is %d", a, b)
    }

     4匿名函数和闭包

    func main()  {
        f := func(x ,y int) int {     // 匿名函数赋值给变量
            return x + y
        }
        f(1, 2)
    
        func(a, b int){             //匿名函数直接执行
            fmt.Println(a + b)
        }(1,2)
    }                                                                   

                                                                                                                              

  • 相关阅读:
    zookeeperclient代码解读
    封装scrollView 循环滚动,tableViewCell(连载) mvc
    PHP经典项目案例-(一)博客管理系统5
    Android插件化(三)载入插件apk中的Resource资源
    比树莓派配置好接地气的香蕉派上手初体验
    HDU Group
    JVM 类的卸载
    JVM 自定义类加载器
    JVM 初始化阶段例子
    JVM 初始化阶段例子 final常量
  • 原文地址:https://www.cnblogs.com/zhangjian0092/p/12356821.html
Copyright © 2020-2023  润新知