• golang函数


    一、函数语法

    func 函数名(形参列表) (返回值列表){

              ......

          return 返回值

    }

    例如:

    package main
    import "fmt"
    
    func test_func(n1 int,n2 int) (int){
        var ret int 
        ret = n1 + n2
        return ret
    }
    
    
    func main(){
        var f int
        f = test_func(1,3)
        fmt.Printf("Type: %T Value: %v
    ",f,f)
    
    }
    
    ##结果##
    Type: int Value: 4
    

      

    二、递归函数

    例子

    package main
    import "fmt"
    
    func digui_func(n1 int){
        if n1 > 2 {
            n1--
            fmt.Println(n1)
            digui_func(n1)
        }
    }
    
    
    func main(){
        digui_func(5)
    }
    
    ##结果##
    4
    3
    2
    

      

     三、init函数(初始化函数)

    没一个源文件都可以包含一个init函数,init函数校准main函数执行前执行。

    例子:

    package main
    import "fmt"
    
    func init(){
        fmt.Println("init.....")
    }
    
    func main(){
        fmt.Println("main.....")
    }
    
    ##结果##
    init.....
    main.....
    

      

    四、匿名函数

    例子:

    package main
    import "fmt"
    
    func main(){
        res := func(n1,n2 int) int{
            return n1 + n2
        }
        
        var s1 int
        var s2 int
        s1 = res(1,2)
        fmt.Println(s1)
        s2 = res(3,4)
        fmt.Println(s2)
    }
    
    ##结果##
    3
    7

      

    全局匿名函数

    例子:

    package main
    
    var (
        res := func(n1,n2 int) int{
            return n1 + n2
        }
    
    )
    

      

    五、闭包函数

    例子:

    package main 
    import "fmt"
    
    func bibao() func (int) int {
        var n int = 10
        return func (x int) int {
            n = n + x
            return n
        }
    }
    
    func main(){
        f := bibao()
        f1 := bibao()
        fmt.Println(f(1))
        fmt.Println(f1(2))
    
    }
    
    ##结果##
    11
    12
    

      

    六、函数的defer

    为了在函数执行完成后,及时释放资源,go的设计者提供了defer(延时机制)

    适合用再关闭文件、关闭数据库连接等

    例子:

    package main
    import "fmt"
    
    
    func test() int {
        defer fmt.Println("s1")
        defer fmt.Println("s2")
        var ss int = 10
        fmt.Println("s3")
        return ss
    }
    
    func main(){
        ret := test()
        fmt.Println(ret)
    }
    
    ##结果##
    s3
    s2
    s1
    10
    

      

  • 相关阅读:
    Centos 下Nginx 自启动脚本
    EUI ToggleButton ToggleSwitch 实现类似音乐开关按钮
    EUI RadioButton,RadioButtonGroup实现多选项按钮
    Theme皮肤文件(json解析、多文件管理)
    egret.Tween、egret.Ease
    Bitmap 的bitmapdata和texture区别
    在Egret实现二维码长按识别
    微信测试号实现微信分享等功能
    Egret Wing3 商城插件下载和使用
    Egret Wing3 FTP使用方法
  • 原文地址:https://www.cnblogs.com/zhangb8042/p/10510762.html
Copyright © 2020-2023  润新知