defer语句中的函数会在return语句更新返回值变量后再执行,又因为在函数中定义的匿名函数可以访问该函数包括返回值变量在内的所有变量,所以,对匿名函数采用defer机制,可以使其观察函数的返回值. 以double函数为例: func double(x int) int { return x + x } 我们只需要首先命名double的返回值,再增加defer语句,我们就可以在double每次被调用时,输出参数以及返回值. func double(x int) (result int) { d
1.匿名函数结合使用 示例1: package main //必须 import "fmt" func main() { a := 10 b := 20 defer func() { fmt.Printf("a = %d, b = %d\n", a, b) }() //()代表调用此匿名函数 //先执行外部的,再执行内部的 a = 111 b = 222 fmt.Printf("外部:a = %d, b = %d\n", a, b) } 执行结果
package main import "fmt" func main() { a := 10 b := 20 defer func() { fmt.Printf("a = %d, b = %d\n", a, b) }() a = 111 b = 222 fmt.Printf("a = %d, b = %d\n", a, b) } 执行后得到以下的结果,需要注意以下: 1.defer的匿名函数是在整个函数执行结束前的一瞬间执行的,即延时执行 2.
匿名函数 1. 函数也是一种类型,因此可以定义作为一个函数类型的变量 package main import "fmt" // 函数作为参数 func add(a, b int) int { return a + b } func testfunc(a, b int, fun func(int, int) int) int { sum := fun(a, b) return sum } func main() { sum := testfunc(, , add) fmt.Println
[tgpl]go匿名函数 0. 定义 匿名函数顾名思义是没有名字的函数, Named functions can be declared only at the package level, but we can use a function literal to denote a function value within any expression. 1. 最简单的例子Map strings.Map(func(r rune) rune { return r + 1 }, "HAL-9000