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)
    }                                                                   

                                                                                                                              

  • 相关阅读:
    java实现文件上传下载至ftp服务器
    理解java代理模式
    [置顶] 理解java中的线程池
    wait,notify,非阻塞队列实现生产者,消费者模型
    理解java阻塞队列BlockingQueue
    CentOS下安装配置Nginx
    putty笔记
    CentOs下安装jdk、MySql、Redis笔记
    简述yum和apt-get的区别
    Linux 文件颜色说明
  • 原文地址:https://www.cnblogs.com/zhangjian0092/p/12356821.html
Copyright © 2011-2022 走看看