golang笔记
来源:互联网 发布:plc编程软件 编辑:程序博客网 时间:2024/05/21 12:32
GO语言函数
func max(num1,num2 int) int{ var result int if (num1 > num2) { result = num1 } else { result = num2 } return result }// 函数返回多个值 func swap(x, y string) (string, string) { return y, x}//函数作为值getSquareRoot := func(x float32) float32{ return math.Sqrt(x)}fmt.Println(getSquareRoot(9))// 命令返回值func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x return}
- 任意类型的不定参数
func myPrintf(args ...interface{}){}
- 匿名函数后后面跟上小括号,里面加参数,就可以直接运行
func (name string){ fmt.Println(name)}("xiaoming")
- Go函数不支持嵌套、重载和默认参数
仅支持:
- 无需声明原型
- 不定长度变参
- 多返回值
- 命名返回值参数
- 匿名函数
- 闭包
- 函数可以作为一种类型使用
- func A(a, b, c int)(int,int,string){}
- 命名返回值
func A()(a,b,c int){ //此时a,b,c已经声明
a,b,c = 1,2,3
return
}
- 不定长参数
func A(a ...int){
fmt.PrintlnI(a) // a是一个slice //值拷贝
}
在不定长参数里面,如果要放其他参数,需要放在不定长参数前面,func A(b string,a …int){}
如果直接把一个slice扔进来,那slice本身是引用传参
int string 等传参是值传参,如果要进行引用传参,可以传指针进来,通过指针间接修改原值
func main(){ a := 1 A(&a) fmt.Println(a) } func A(a *int){ *a = 2 fmt.Println(*a) }
闭包
func main() { f := closure(10) fmt.Println(f(1)) fmt.Println(f(2))}func closure(x int) func(int) int { return func(y int) int { return x + y }}
执行方式类似其他语言中的析构函数,在函数体执行结束后按照调用顺序的
相反顺序
逐个执行
即使函数发生严重
错误也会执行
支持匿名函数的调用
常用于资源清理、文件关闭、解锁以及记录时间等操作
通过与匿名函数配合可在return之后修改函数计算结果
如果函数体内某个变量作为defer时匿名函数的参数,则在定义defer时即已经获得了拷贝,否则则是引用某个变量的地址
Go没有异常机制,但有panic/recover模式来处理错误
Panic可以在任何地方引发,但recover只有
在defer调用的函数中有效
阅读全文
0 0
- golang笔记
- golang笔记
- golang笔记
- Golang笔记
- GoLang学习基础笔记
- golang笔记-注释-标识符
- golang simplejson 使用笔记
- Golang学习笔记//序
- Golang Log 学习笔记
- golang ubuntu 安装笔记
- Golang学习笔记:常见问题
- golang类型系统笔记
- Golang学习笔记
- golang学习笔记
- golang--json使用笔记
- golang学习笔记
- golang ubuntu 配置 笔记
- golang学习笔记
- HBase中LSM的思想
- 重定向和转发的区别
- angularjs 实现 window.onload() $(document).ready() 的方法
- ZooKeeper私人学习笔记
- 代码记录下 拼图改成TAB页
- golang笔记
- vue-cli 遇到的问题
- Git reset 撤销本地/远程提交版本
- Python——变量类型
- TensorFlow的Session工作原理
- 集合框架 1
- Android中点击链接调起App
- WOJ1269-Inversion
- 数据库面试技巧,通过JDBC展示自己专业性,摘自java web轻量级开发面试教程