【第二十篇】GO 匿名函数🔥🔥

89 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情

一、匿名函数:

一、介绍:

Go 支持匿名函数,如果我们某个函数只是希望使用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用。

匿名函数:没有定义名字的函数


二、匿名函数使用方式一:

在定义匿名函数时就直接调用,这种方式匿名函数只能调用一次。【案例演示】

package main

import "fmt"

func main() {
	// 在定义匿名函数时,就直接调用,这种方式匿名函数只能调用一次
	// 案例演示:求两个数的和,使用匿名函数的方式来完成

	res1 := func(n1 int, n2 int) int {
		return n1 + n2
	}(10, 20)

	fmt.Println("res1=", res1)

	// 这里体现出定义:
	// func(n1 int, n2 int) int {
	// 	return n1 + n2
	// }

	// 这里体现出来传参
	// (10, 20)
}

匿名函数:相当于定义一个函数作用域,在此匿名函数中的变量不会污染全局变量。


三、匿名函数使用方式二:

将匿名函数赋给一个变量(函数变量),再通过该变量来调用匿名函数【案例演示】

package main

import "fmt"

func main() {
	// 在定义匿名函数时,就直接调用,这种方式匿名函数只能调用一次
	// 案例演示:求两个数的和,使用匿名函数的方式来完成

	res1 := func(n1 int, n2 int) int {
		return n1 + n2
	}(10, 20)

	fmt.Println("res1=", res1)

	// 这里体现出定义:
	// func(n1 int, n2 int) int {
	// 	return n1 + n2
	// }

	// 这里体现出来传参
	// (10, 20)

	// 将匿名函数 func(n1 int, n2 int) int 赋给 a 变量
	// 则 a 的数据类型就是函数类型 , 此时,我们可以通过 a 完成调用
	// 将匿名函数交给一个变量,再通过变量完成调用(简单来说,用处不大)
	a := func(n1 int, n2 int) int {
		return n1 - n2
	}

	res2 := a(10, 30)
	fmt.Println("res2=", res2)

	res3 := a(90, 30)
	fmt.Println("res3=", res3)
}

四、全局匿名函数:

如果将匿名函数赋值给一个全局变量,那么这个匿名函数,就成为一个全局匿名函数,可以在程序有效【案例演示】

package main

import "fmt"

// 定义一个全局匿名函数变量
var (
	// func1 就是一个全局匿名函数
	Func1 = func(n1 int, n2 int) int {
		return n1 * n2
	}
)

func main() {

	// 全局匿名函数的使用
	res4 := Func1(4, 9)
	fmt.Println("res4=", res4)
}