15_匿名函数和闭包的使用


1、在go语言中,所有的匿名函数(规范称为:函数字面量)都是闭包函数,匿名函数不需要定义函数名的一种函数
实现形式,它并不是一个新概念,可以追溯到语言
2、闭包:就是一个“函数”捕获了和它在同一个作用域的其他常量。
这就意味着当闭包被调用的时候,不管程序在什么地方调用,闭包都能够使用这些常量或者变量。
它并不关心这些捕获的常量和数量是否已经超越了作用域,所以只要这些闭包还在使用,这些变量就还会存在

package main

import "fmt"
func main() {
	rank := 1
	comment := "优秀"
	//第一种方式,可以通过定义变量来调用匿名函数
	f := func() {
		fmt.Printf("rank=%d,comment=%s
", rank, comment)
	}
	f() //函数调用

	//第二种方式,通过定义一个函数类型进行调用
	type Ftest func()
	var f2 Ftest = f
	f2()

	//第三种,不通过变量,定义完立即执行
	//无参无返回值
	fmt.Println("无参无返回值--")
	func() {
		fmt.Printf("rank=%d,comment=%s
", rank, comment)
	}() //()表示对匿名函数的调用

	//有参无返回值
	func(a, b int) {
		res := a + b
		fmt.Println(res)
	}(1, 3) //传参调用

	//有参有返回值
	result := func(a, b int) (res int) {
		res = a + b
		return

	}(1, 3) //传参调用匿名函数
	fmt.Println("result=", result)

}

运行结果:


                             

每天的价值就是不停息的前进!!!
原文地址:https://www.cnblogs.com/zhaopp/p/11439365.html