go(四)go函数
函数
函数是 Go 里面的基本代码块。是go语言中的一等公民。
除了main函数和 init 函数外,其他的函数都是可以有返回值的,并且go中的函数支持多个返回值。
函数中的参数传递是值传递,而不是引用传递,函数中修改的值不会影响原始的值。(map 修改的时候会影响是因为对象的副本和原对象的引用是一个)
函数支持多个返回值,在声明函数的时候再函数的末尾声明返回值的类型和个数
示例:
1 | func a(param int) int,string |
函数也可以作为函数的参数和返回值
多个入参和出参的函数
1 | func TestFunc1(t *testing.T) { |
当有返回值的时候,但是并不需要全部接收,那么可以使用 _ 作为一个空白的占位符不做任何处理
变长参数函数
在类型前加… 表示变长参数
1 | func addAll(a ...int) int { |
参数和返回值传递函数
通过对函数进行传递可以做到在原有函数上拓展一些功能,返回一个增强的函数
1 | //打印程序执行时间 |
defer
关键字 defer 允许我们推迟到函数返回之前(或任意位置执行 return 语句之后)一刻才执行某个语句或函数(为什么要在返回之后才执行这些语句?因为 return 语句同样可以包含一些操作,而不是单纯地返回某个值)。
defer 非常类似于java 中的finaly 块的代码.
不管函数执行过程中是否抛出异常,defer 修改的函数是一定会执行的,并且在返回之前执行。
1 |
|
执行结果顺序
1 | 开启资源====> |
内置函数
Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。它们有时可以针对不同的类型进行操作,例如:len()、cap() 和 append()。
- close() 管道通信
- len()、cap() 获取长度和容量
- new()、make() 都是用来分配内存,new一般用于值类型和用户自定义的类型,make用于内置类型
- copy()、append() 用于复制和连接
- panic()、recover() 用来错误处理机制
- print()、println()用于打印
- complex()、real ()、imag() 用于创建和操作复用
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment

