当前位置: 首页 > news >正文

Go语言函数签名和匿名函数

函数签名

函数类型又叫做函数签名,一个函数的类型就是函数定义首行去掉函数名、参数名和{},可以用fmt.Printf的“%T”格式化参数打印函数的类型。
两个函数类型相同的条件是:拥有相同的形参列表和返回值列表,形参名可以不同。
type可以定义函数类型:type funcType func(int)int
Go中函数是第一公民,有函数名的函数可以直接赋值给变量例如

// 实参到形参的传递
func main() {a := 10chValue(a)fmt.Println(a)chPointer(&a)fmt.Println(a)f := chValuef(10)
}func chValue(a int) int {a++return a
}func chPointer(a *int) {*a++return
}// 定义函数类型
type funcType func(int) int

匿名函数

Go提供两种函数:有名函数和匿名函数,匿名函数可以看作函数字面量,所有直接使用函数类型变量的地方都可以由匿名函数代替。匿名函数可以直接赋值给函数变量,也可以当作实参也可以当作返回值直接被调用。
简单来讲,就是写一个不带函数名的函数,这个可以直接定义变量=它,其他函数的参数列表和返回值也可以直接用匿名函数表示参数

defer

Go函数里提供了这个关键字,它遵循先进后出的原则。defer后边必须是函数或者方法的掉哟个,不能是语句。
defer参数不支持传递地址值只能是拷贝值

	a := 10defer func() {fmt.Println(1)}()defer func() {fmt.Println(2)}()defer func() {fmt.Println(3)}()fmt.Println(a)

打印为 10 3 2 1

主动调用on.Exit(1)后defer会失效即使已经注册

http://www.lryc.cn/news/222472.html

相关文章:

  • Pytest系列(16)- 分布式测试插件之pytest-xdist的详细使用
  • 基于JavaWeb的网上销售系统设计与实现
  • wpf添加Halcon的窗口控件报错:下列控件已成功添加到工具箱中,但未在活动设计器中启用
  • antv/x6 自定义html节点并且支持动态更新节点内容
  • 设计模式之命令模式
  • Linux学习笔记--高级
  • 在Java中操作Redis
  • 【服务器】fiber协程模块
  • SparkML
  • 实时定位与路径优化:跑腿App系统开发中的地理信息技术
  • Tomcat的HTTP Connector
  • 将Pytorch搭建的ViT模型转为onnx模型
  • 图神经网络(GNN)性能优化方案汇总,附37个配套算法模型和代码
  • 国科大移动互联网考试资料(2023+2020+2018真题+答案)
  • ModStart系统安全规范建议
  • 【漏洞复现】Django_debug page_XSS漏洞(CVE-2017-12794)
  • Redis性能调优:深度剖析与示例解析
  • oracle查询前几条数据的方法
  • c#弹性和瞬态故障处理库Polly
  • 20231107-前端学习炫酷菜单效果和折叠侧边栏
  • 基于CLIP的图像分类、语义分割和目标检测
  • python爬虫(数据获取——selenium)
  • [wp]NewStarCTF 2023 WEEK5|WEB
  • 未将对象引用设置到对象实例
  • 网络的地址簿:Linux DNS服务的全面指南
  • 输电线路AR可视化巡检降低作业风险
  • 18. 四数之和
  • 排序:堆排序(未完待续)
  • 小米智能电视投屏方法
  • 保外就医罪犯收到指定医院《罪犯病情诊断书》及检测、检查报告等其他医疗文书后,应当在规定时限内提交( ),或者受委托司法所审查。