匿名函数 | 学习笔记

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

开发者学堂课程【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。

相关文章
|
消息中间件 架构师 Java
史上最细最强大的RocketMQ实现分布式事务解决方案教程|Java 开发实战(上)
史上最细最强大的RocketMQ实现分布式事务解决方案教程|Java 开发实战
980 0
史上最细最强大的RocketMQ实现分布式事务解决方案教程|Java 开发实战(上)
|
12月前
|
前端开发 JavaScript
使用 JavaScript 实现图片预览功能
使用 JavaScript 实现图片预览功能
314 0
|
人工智能 前端开发 云计算
本地搭建AI服务器
本地搭建AI服务器
1033 1
|
设计模式 安全 API
软件体系结构 - 架构风格(5)层次结构架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(5)层次结构架构风格
1152 0
|
JavaScript 前端开发 开发工具
npm更新和管理已发布的包
npm更新和管理已发布的包
|
关系型数据库 MySQL 测试技术
软件测试|MySQL BETWEEN AND:范围查询详解
软件测试|MySQL BETWEEN AND:范围查询详解
|
网络协议 安全 网络安全
【已解决】电脑连上网线但无法上网
【已解决】电脑连上网线但无法上网
|
前端开发 JavaScript 开发者
【chatgpt谈前端三大主流框架】React、Vue和Angular的优缺点及如何选择
chatgpt号称无所不能,今天我们就来考考他,让他来对比下React、Vue和Angular。
482 0
|
人工智能 程序员 API
代码注释对于程序员重要吗?
代码注释对于程序员重要吗?
166 0