匿名函数 | 学习笔记

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

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

相关文章
带你读《2022技术人的百宝黑皮书》——CoHOZ: Contrastive Multimodal Prompt Tuning for Hierarchical Open-set Zero-shot Recognition(10)
带你读《2022技术人的百宝黑皮书》——CoHOZ: Contrastive Multimodal Prompt Tuning for Hierarchical Open-set Zero-shot Recognition(10)
265 0
|
网络协议
协议森林16 小美的桌号(DHCP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。   DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址、DNS域名服务器地址等。
1632 0
|
19天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
8804 25
|
18天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
3457 15
|
17天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
2204 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
12天前
|
人工智能 Linux 开发者
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
Codex是OpenAI推出的AI编程智能体,可读取本地项目、理解需求并自动修改代码。支持桌面GUI、命令行(CLI)及VS Code/Cursor插件三种形态,覆盖可视化操作、终端高效开发与编辑器无缝集成场景,助开发者用自然语言驱动编码全流程。(239字)
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
|
18天前
|
云安全 人工智能 安全

热门文章

最新文章