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

  

原文地址:https://www.cnblogs.com/zhangb8042/p/10510762.html