golang 函数

go 函数

go函数的规范
func g(){   ///大括号的顺序不能乱
    
}

函数类型

指定函数类型
1.type FUNCTION func()

2.type FUNCTION1 func(int,int)

3. type FUNCTION2 func(int,int)int

函数返回

1. func f1(s int)int{
    retrun s+2
}
2. func f1(s int,b int)(sum int){
    sum = s+b
    return
}
3. func f2(a int,b int ,c int){
    a b,cb:=1,2,3
    return
}
a,b,c:=f2()

匿名函数

  • 匿名内部函数 func main(){ a:=10 b:=20 // 匿名函数 带返回值 func (a int b int){ retrun(a+b) }(a,b) 这是直接使用匿名

    // 这是将匿名函数赋予变量
      f:=func (a int, b int){
          return(a+b)
      }

    }

    //若是无参无返匿名函数 func(){} = {}

闭包

格式为:func 函数名() 返回函数类型(){}

举例:
func f1() func() int{
    var a int
    return func() int{
        a++
        return a
    }
}    封装
func main{
    f:=f1()
    fmt.Println(f())
} 调用
    闭包需要声明接收参数类类型
    
///

1. 闭包函数可以相当于生成器 会保留上次调用运行的变量结果继续下一次运行 
示范如下:
func squares() func() int {
    var x int
    return func() int {
        x++
        return x * x
    }
}

func main() {
    f := squares() //返回函数指针
    fmt.Printf("%v\n", f)
    fmt.Println(f())
    fmt.Println(f())
    fmt.Println(f())
    fmt.Println(f())
    fmt.Printf("%v\n", f)
}
运行结果
0x401620
1
4
9
16
0x401620

递归函数

举例:
var sum int = 1

func digui(a int) int {

	if a <= 1 {
		return sum
	}
	sum += a
	fmt.Println(sum, a)
	return digui(a - 1)
}


func main() {
	d := digui
	fmt.Println(d(6000))
}

匿名函数

规则 fun(参数)返回值 返回类型{ //参数可加可不加 返回值与类型都是
    代码块
}()  // 这个地方假如加括号为匿名函数调用 不加不自动使用

特性注意点
1. 闭包函数可以相当于生成器 会保留上次调用运行的变量结果继续下一次运行
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值