Go语言的函数本身可以作为值进行传递,既支持匿名函数和闭包,又能满足接口。

函数声明

func 函数名 (参数列表)(返回参数列表){
// 函数体
} func funcName(parametername type1,parametername type2 ...)(output1 type1 , utput2 type2){
//逻辑代码
//返回多个值
return value1,value2
}

参数类型简写

在参数列表中,如果有多个参数变量,则以逗号分隔;如果相邻变量是同类型,则可以将类型省略

func add(a,b int){
}

Go语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑。

函数变量

在Go语言中,函数也是一种类型,可以和其他类型(如int32、float等等)一样被保存在变量

匿名函数

Go语言支持匿名函数,即在需要使用函数时再定义函数。匿名函数没有函数名,只有函数体,函数可以作为一种类型被赋值给变量,匿名函数也往往以变量方式被传递。

匿名函数经常被用于实现回调函数,闭包等。

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

1. 在定义时调匿名函数

package main

import (
"fmt"
) func main() {
func(name string){
fmt.Println("hello",name)
}("huahua")
}

2. 将匿名函数赋值给变量

package main

import "fmt"
// 将匿名函数赋值给变量
func main() {
f:= func(name string) {
fmt.Println("hello "+name)
}
f("sixinshuier")
}

3. 匿名函数用作回调函数

package main

import (
"fmt"
"math"
) func main() {
arr := []float64{1,4,36,30}
// 求平方
visit(arr, func(v float64) {
v = math.Pow(v,2)
fmt.Printf("%.2f \n",v)
})
//求平方跟
visit(arr,func(v float64){
v =math.Sqrt(v)
fmt.Printf("%0.0f \n",v)
})
} func visit(list []float64, f func(float64)){
for _,value := range list{
f(value)
}
}

最新文章

  1. 立flag
  2. iOS 利用webView加载html代码,在代理中获取html页面的链接时出现的问题
  3. Posterior visual bounds retrieval for the Plato framework
  4. git 临时记录
  5. 采用formdata做跨域的、无刷新、带进度条的文件上传
  6. kenrnel 驱动中常用的宏
  7. 【OpenGL】查看显卡对OpenGL的支持程度
  8. css技术和实例
  9. php.ini的配置
  10. mysql手工注入
  11. mysql 支持emoji
  12. pc端有弹出层 并有滚动的时候遇到的问题以及解决
  13. HTTP - 基本认证
  14. Lua开发环境配置
  15. ABP领域层——领域事件(Domain events)
  16. 10.TCP连接的建立与终止
  17. 前端HTML介绍
  18. canvas练手项目(二)——各种操作基础
  19. spring官网上下载历史版本的spring插件,springsource-tool-suite
  20. 【Alpha】Scrum Meeting 3

热门文章

  1. 创建一个springboot项目
  2. dev 控件获得所有的EFDEVGRID
  3. HarmonyOS三方件开发指南(12)——cropper图片裁剪
  4. Mysql训练:两个表中使用 Select 语句会导致产生 笛卡尔乘积 ,两个表的前后顺序决定查询之后的表顺序
  5. Dyno-queues 分布式延迟队列 之 辅助功能
  6. 授权认证登录之 Cookie、Session、Token、JWT 详解
  7. 华硕主板开机无法进入BIOS
  8. Java 常用类——StringBuffer&StringBuilder【可变字符序列】
  9. Django的路由控制
  10. 通过unity Distribution Portal发布华为渠道的游戏