go语言学习之闭包函数

package main

import (
    "fmt"
)

// 匿名函数1
func intSeq() func() int{
     var arrInt = [10]int{1,2,3,4,5,6,7,8,9,10}
     i := -1
    return func() int{
        i += 1
        return arrInt[i]
    }
}

// 带参数匿名函数2
func intSeq2() func(index int) int{
     var arrInt = [10]int{0,1,2,3,4,5,6,7,8,9}
     i := -1
    return func(index int) int{
        i += 1
        return arrInt[index]
    }
}

 func testIntSeq(){
      nextInt := intSeq()
     fmt.Println(nextInt())
     fmt.Println(nextInt())
 }
 func testIntSeq2(){
      nextInt := intSeq2()
     fmt.Println(nextInt(2))
     fmt.Println(nextInt(5))
 }
 
 
func testQuestion(){
    var j int = 5
    a := func() (func()){
        var i int = 10
        return func() {
            fmt.Println(i, j)
        }
    }
   
    b := a()
    b()
}  
 
 func testQuestion2(){
      var j int = 5
     a := func() (func()){
          var i int = 10
          return func() {
             fmt.Println(i, j)
          }
      }()
     a()
 }
 func main(){
     // 测试1匿名函数1
     testIntSeq();
     // 测试2带参数匿名函数
     testIntSeq2();
     // 测试3
     testQuestion();
     // 测试4
     testQuestion2();
 }

猜你喜欢

转载自www.cnblogs.com/xzlq/p/9951612.html
今日推荐