zoukankan      html  css  js  c++  java
  • 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)
    }                                                                   

                                                                                                                              

  • 相关阅读:
    Mina、Netty、Twisted一起学(七):公布/订阅(Publish/Subscribe)
    MySQL高可用之——keepalived+互为主从
    JS之BOM
    Mac下利用(xcode)安装git
    计算矩阵边缘元素之和
    什么是猴子补丁(monkey patch)
    协议支撑
    BZOJ 3727 PA2014 Final Zadanie 树形DP
    Linux cat命令
    iOS8新特性
  • 原文地址:https://www.cnblogs.com/zhangjian0092/p/12356821.html
Copyright © 2011-2022 走看看