匿名函数 | 学习笔记

简介: 简介:快速学习匿名函数

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map :匿名函数】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9606


匿名函数

 

目录

一、 介绍

二、 匿名函数使用方式1

三、 匿名函数使用方式2

四、 全局匿名函数


一、介绍

Go 支持匿名函数,匿名函数就是没有名字的函数,如果我们某个函数只是希望使用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用。匿名函数出现在很多的编程语言中,一般情况下函数都是有名字的。

 

二、匿名函数使用方式1

1、在定义匿名函数时就直接调用,这种方式匿名函数只能调用一次。调用过后就不可以再次调用了,匿名函数没有名字,也没有给匿名函数变量。有时候并不希望定义函数,只想调用函数,这时候就可以用匿名函数。

2、案例说明:

package main

import (

"fmt"

)

func main() {

//在定义匿名函数时就直接调用,这种方式匿名函数只能调用一次

//案例演示,求两个数的和,使用匿名函数的方式完成

res1 := func (n1 int, n2 int) int i

return n1 + n2

}(10,20)

fmt.Println( "res1=", res1)

}

3、代码说明:

第一种调用方式在定义匿名函数时就直接调用,这种方式匿名函数只能调用一次。求两个数的和,使用匿名函数的方式完成,n1 int,n2 int 返回一个 int,返回n1+n2。直接在后面输入 n1,n2用一个变量来接收。在定义匿名函数时就传参了。输出结果 fmt.Println( "res1=", res1) res1=30,结果相符。

 

三、匿名函数使用方式2

1、将匿名函数赋给一个变量(函数变量),再通过该变量来调用匿名函数。

2、案例说明:

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赋给a变量

//则a的数据类型就是函数类型,此时,我们可以通过a完成调用

a:= func (n1 int, n2 int) int i

return nl1- n2

I

res2 := a( 10,30)

fmt.Println( "res2=", res2)

res3 := a(90,30)

fmt.Println( "res3=", res3)

}

3、结果输出:

res1= 30

res2=-20

res3=60

4、代码分析

求两个数的差,将匿名函数 func (n1 int, n2 int) int 赋给 a 变量则 a 的数据类型就是函数类型,此时,可以通过 a 完成调用,res2 :=a(10,30),a 可以反复调用,但 a 不是函数名。将定义的匿名函数交给一个变量,通过变量完成调用。在某些情况下用这种函数可以完成特殊的需求。

 

四、全局匿名函数

1、如果将匿名函数赋给一个全局变量,那么这个匿名函数,就成为一个全局匿名函数,可以在程序有效。

var (

//fun1就是一个全局匿名函数

Fun1 = func (n1 int, n2 int) int f

return n1 * n2

}

)

//全局匿名函数的使用

res4 :=Fun1(4,9)

fmt.Println(res4=,res4)

2、代码解析:

交给一个变量,Fun1为全局匿名函数对应的变量,把匿名函数交给全局变量,此时Fun1就是一个全局匿名函数,在整个程序都是有效的。全局匿名函数的使用,res4 :=Fun1(4,9) fmt.Println(res4=,res4)

结果输出36。

在实际的开发中,用的比较多的是匿名函数使用方式1。

相关文章
|
1月前
|
存储 Go C++
lambda表达式与匿名函数
lambda表达式与匿名函数
18 0
|
Java Kotlin
Kotlin中匿名函数(又称为Lambda,或者闭包)和高阶函数的详解
Kotlin中匿名函数(又称为Lambda,或者闭包)和高阶函数的详解
138 0
|
编译器 C++
C++的匿名函数(lambda表达式)
C++的匿名函数(lambda表达式)
382 1
C++的匿名函数(lambda表达式)
|
PHP 开发者
简单匿名函数|学习笔记
快速学习简单匿名函数
简单匿名函数|学习笔记
|
PHP 开发者
匿名函数闭包|学习笔记
快速学习匿名函数闭包
匿名函数闭包|学习笔记
|
存储 开发者 Python
匿名函数的使用介绍 | 学习笔记
快速学习 匿名函数的使用介绍
140 0
匿名函数的使用介绍 | 学习笔记
|
C#
C#匿名函数
C#匿名函数
92 0
|
Go 开发者
匿名函数 | 学习笔记
简介:快速学习匿名函数
|
JavaScript 前端开发 算法
|
编译器 Scala 开发者
函数柯里化 | 学习笔记
快速学习函数柯里化