go语言学习笔记(9) 函数
来源:互联网 发布:恭亲王奕欣 知乎 编辑:程序博客网 时间:2024/06/02 03:29
格式
func 函数名(参数列表)(返回值列表){
}
参数列表
参数列表格式类似变量声明,但不需要var关键字
age int, name string
i1, i2 int
返回值列表
1、基本格式同参数列表
2、返回值可以没有变量名
3、当只有一个返回值,且返回值变量未命名时,或没有返回值时,括号可省略
多返回值
实现
1、直接return, 按顺序,依次附加上各个返回值
2、由于返回值都有变量名,可以直接对各个返回值变量进行赋值
调用return时,自动将各个返回值变量的值返回给调用语句
接收
1、准备对应的变量接收函数返回的值
2、不需要接收的变量使用匿名变量(_)接收
函数调用
包内函数:直接调用
包外函数:
1、导入包
2、调用包外函数:包名.函数名(实参表)
3、函数名必须大写字母开头
不定参数的函数
1、不限制不定参数的个数,但是限制不定参数的类型
最后一个参数类型: ...type
...type:本质上是一个数组切片,即[]type
可以通过访问数组切片元素的方式来获取实参
2、不定参数的函数中向另一个不定参数的函数传递参数
myfunc(args...) //原样传递
myfunc(args[1:]...) //传递部分
3、任意类型的不定参数
1)、参数类型: ...interfase{}
2)、获取各个实参的类型
for _, arg := range args{
switch arg.(type){
case int:...
case string:...
...
}
}
匿名函数
由一个不带函数名的函数声明和函数体构成
可以直接赋值给变量,或直接执行
f := func (x int) int{...}
func(x int) int{...}(2)//带“(2)”表示,直接调用,参数为2
闭包
定义
包含自由变量的代码块
自由变量: 不在闭包内和任何全局上下文中定义,而是在定义闭包的环境中定义
作用
只要闭包还会被调用,闭包中引用的变量(包含自由变量)就不会被释放
闭包为自由变量提供绑定的计算环境
价值
闭包可以做为函数对象或匿名函数,存储到变量中,做为参数进行传递
能够被函数动态的创建和返回
实例
func main(){
j := 5
fa := func()(func()){ //匿名函数,返回值为一个函数,直接赋值给fa
i := 10 //i: 自由变量,只有匿名函数能访问到,保证其安全
return func(){ //返回闭包
fmt.Println(i, j)
}
}() //(): 表示匿名函数直接运行
fa() //调用闭包
j *= 2
fa() //调用闭包
}
阅读全文
0 0
- go语言学习笔记(9) 函数
- Go语言学习笔记---函数
- Go语言学习笔记(五) [函数]
- Go语言学习笔记 -- 内建函数
- Go语言学习笔记 -- 函数(1)
- Go语言学习笔记 -- 函数(2)
- Go语言学习笔记(四)函数
- Go语言学习笔记之函数(function)
- Go语言学习笔记9
- Go语言学习笔记
- Go语言学习笔记
- go语言学习笔记
- Go语言学习笔记
- GO语言学习笔记
- Go语言学习笔记
- GO语言学习笔记
- Go语言学习笔记
- Go语言学习笔记
- 文章标题
- mysql sending data的状态导致数据库很慢及无法DDL 操作
- 从顺序表中删除所有值为x的元素(Java实现),要求时间复杂度O(n),空间复杂度O(1)
- 50条sql查询技巧
- 2017-9-25 H5增加的标签
- go语言学习笔记(9) 函数
- Pixhawk软件仿真飞行测试
- Python草稿簿-Pandas的DataFrame结构
- 使用opencv标定单目相机(张正友法)代码实现
- git 入门使用二
- 极简邮件
- Apache配置(多项目)
- 线程
- int,long类型范围