文章目录

  • 1. 匿名函数的声明
  • 2. 匿名函数的作用
    • 2.1 在定义时调用匿名函数
    • 2.2 匿名函数可以赋值
    • 2.3 匿名函数作为回调函数
    • 2.4 使用匿名函数实现操作封装
  • 3. 总结

1. 匿名函数的声明

所谓匿名函数,就是没有名字的函数,它只有函数逻辑体,而没有函数名。
定义的格式如下

func(参数列表)(返回参数列表){函数体
}

匿名函数的定义就是没有名字的普通函数定义。

2. 匿名函数的作用

2.1 在定义时调用匿名函数

匿名函数可以在声明后调用,例如:

func(data int) {fmt.Println("hello", data)
}(100)

注意第3行}后的(100),表示对匿名函数进行调用,传递参数为 100。
而且必须定义在函数里

2.2 匿名函数可以赋值

f := func(data int) {fmt.Println("hello", data)
}
f(100)

2.3 匿名函数作为回调函数

package main
import "fmt"
func main() {prints([]int{1, 2, 3}, func(i int) {fmt.Println(i)})
}
func prints(list []int, f func(int)) {for _, b := range list {f(b)//打印}
}

2.4 使用匿名函数实现操作封装

package main
import ("flag""fmt"
)
var skillParam = flag.String("skill", "", "skill to perform")
func main() {func(data int) {fmt.Println("hello", data)}(100)flag.Parse()var skill = map[string]func(){"fire": func() {fmt.Println("chicken fire")},"run": func() {fmt.Println("soldier run")},"fly": func() {fmt.Println("angel fly")},}if f, ok := skill[*skillParam]; ok {f()fmt.Println(skill)} else {fmt.Println("skill not found")}
}

代码说明如下:
第 6行,定义命令行参数 skill,从命令行输入 --skill 可以将=后的字符串传入 skillParam 指针变量。
第 11 行,解析命令行参数,解析完成后,skillParam 指针变量将指向命令行传入的值。
第 12 行,定义一个从字符串映射到 func() 的 map,然后填充这个 map。
第 12~22 行,初始化 map 的键值对,值为匿名函数。
第 23 行,skillParam 是一个 *string 类型的指针变量,使用 *skillParam 获取到命令行传过来的值,并在 map 中查找对应命令行参数指定的字符串的函数。
第 24 行,执行匿名函数
第 27 行,如果在 map 定义中存在这个参数就调用,否则打印“技能没有找到”。
运行代码,结果如下:

PS D:\code> go run main.go --skill=fly
angel fly
PS D:\code> go run main.go --skill=run
soldier run

3. 总结

这篇文章是我在百度查资料记的笔记,可能和原文雷同,找不到链接。贴不到网址!

golang匿名函数相关推荐

  1. Golang的匿名函数和闭包

    1.匿名函数(anonymous) 匿名函数是一种没有函数名的函数. 在声明匿名函数之后,在其后加上调用的参数列表,即可对匿名函数进行调用 匿名函数有两种调用执行方式: (1)将匿名函数保存到变量,通 ...

  2. Golang——秒懂函数、参数、可变参数、匿名函数、回调函数、内置函数

    函数: 函数是结构化编程的最小模块单元.它将复杂的算法过程分解为若干较小任务,隐藏相关 细节,使得程序结构更加清晰,易于维护.函数被设计成相对独立,通过接收输入参数完成一段算法指令,输出或存储相关结果 ...

  3. 专科 java转go 翱翔之路(一)基础语法:变量声明,匿名函数,结构体,函数,map

    本人专科!在太原干了一年了,想从java转go,上班中自学go,明年找go语言相关的工作 立帖为证! 待羽翼丰满,大风到来,便是我翱翔之时!!! 1.Go语言 1.命令 1.1 查看版本号 go ve ...

  4. Golang function 函数详解

    前言 对于任何语言而言,函数都是结构化编程中的重要一环,通过函数机制,可以把一个大的模块分解成多个小任务,让代码结构更清晰,可复用性大大提高. 本文将介绍如何定义,调用函数,如何定义和接收函数错误,以 ...

  5. 【Golang】函数(一等公民)的使用

    文章目录 函数的声明(定义) 普通函数声明 函数的返回值 调用函数 Go语言变量 匿名函数 定义一个匿名函数 使用函数类型实现接口 Go语言闭包(Closure)--引用了外部变量的匿名函数 在闭包内 ...

  6. python 匿名函数的使用

    python 匿名使用是使用 lambda 来实现,主要特点是没有函数名 匿名函数的一般格式为: result =lambda [arg,[arg1.....argn]] : expression r ...

  7. Python day10 global关键字、函数递归、匿名函数、map函数的用法详解

    1.global关键字 引用全局变量,在局部全局变量改变,也会改变,global相当于指针,将地址指向全局变量的name name='littlepage'def littepage():global ...

  8. Go 学习笔记(16)— 函数(02)[函数签名、有名函数、匿名函数、调用匿名函数、匿名函数赋值给变量、匿名函数做回调函数]

    1. 函数签名 函数类型也叫做函数签名,可以使用 fmt.Printf("%T") 格式化参数打印函数类型. package mainimport "fmt"f ...

  9. js里的匿名函数 数组排序

    // 匿名函数:其实就是函数的简写形式 var method =function(){ alert("123"); } method(); // 匿名函数可以用于事件的处理 fun ...

最新文章

  1. 后台开发经典书籍--深入理解计算机系统
  2. linux驱动开发的经典书籍
  3. android 通过广播唤醒被杀死的app
  4. 215. 数组中的第K个最大元素 BFPRT最牛解法
  5. eclipse 配置多个tomcat
  6. 2022 年您必须关注的 8 个python数据科学神器
  7. 【Network】OVS VXLAN/GRE 实践
  8. 风险预测模型_【期刊导读】侯金林教授团队发表全球首个跨病因和跨种族的慢性肝病患者肝癌风险预测模型——aMAP评分...
  9. 100以内的质数的三种实现
  10. java给文件777权限_Linux常用命令:chmod修改文件权限 777和755分别是什么意思?
  11. 本土程序员杀进硅谷的第一步---突破英语瓶颈
  12. 计算机实验word,实验六计算机基础——word段落设置
  13. Python数据处理之一:数据读取
  14. Linux文件与目录的复制、删除与移动(cp、rm、mv)
  15. JavaScript高阶
  16. Mac配置VScode
  17. suricata中的单模匹配和多模匹配
  18. matlab nan 无色_Matlab NAN如何去掉
  19. 关于室内分布系统中合路器、功分器、耦合器的对比
  20. Java基础练习题day2

热门文章

  1. Linkis简单版安装教程
  2. nested exception is java.lang.NoSuchMethodError
  3. Android屏幕监视方法,Android 关于手机屏幕的那些事
  4. 微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-翟东平-专题视频课程...
  5. mysql备份恢复与集群部署
  6. impala java 堆内存配置_【原创】大叔问题定位分享(38)impala报错内存不足
  7. 孙陶然:三段式工作法是非常有效的聪明工作方法
  8. 你连基础的JVM运行时内存布局都忘了?Java面试题及解析
  9. 【原创】简单介绍 Windows XP 中的chkdsk(checkdisk磁盘检查)工具
  10. 古筝d调变降e调怎么办_古筝怎么从D调转成E调