zoukankan      html  css  js  c++  java
  • golang之匿名函数

     1 package main
     2 
     3 import "fmt"
     4 
     5 /* squares返回一个匿名函数
     6  * 该匿名函数每次调用返回下一个数的平方
     7  * func name(parameter-list) (result-list) {
     8  *     body
     9  * }
    10  */
    11 
    12 func squares() func() int {
    13     var x int
    14     return func() int {
    15         x++
    16         return x * x
    17     }
    18 }
    19 
    20 func main() {
    21     f := squares() //返回函数指针
    22     fmt.Printf("%v
    ", f)
    23     fmt.Println(f())
    24     fmt.Println(f())
    25     fmt.Println(f())
    26     fmt.Println(f())
    27     fmt.Printf("%v
    ", f)
    28 }

    执行结果:

    1 0x401620
    2 1
    3 4
    4 9
    5 16
    6 0x401620

       通过这个例子, 我们看到变量的生命周期不由它的作用域决定:squares返回后, 变量x仍然隐式的存在于f中;

  • 相关阅读:
    Path Sum
    Restore IP Addresses
    Subsets II
    N-Queens
    Subsets
    Combination Sum II
    Combination Sum
    Sudoku Solver
    Valid Sudoku
    【贪心】【Uva11292】 勇者斗恶龙
  • 原文地址:https://www.cnblogs.com/chris-cp/p/5899313.html
Copyright © 2011-2022 走看看