4_函数
函数
函数介绍
Go 中的函数重载是被禁止的,即不能通过不同的参数传递执行同名函数的不同功能。
Go 中没有泛型的概念,因此它不支持那种支持多种类型的函数,不过大部分情况可以使用 interface 跟反射来实现相似的功能。
传递变长参数
如果某个函数的最后一个参数采用 …type 的形式,那么这个函数就可以用来处理一个变长的参数,这个长度可以是 0,这样的函数称为变参函数。
1 |
|
defer 和追踪
关键字 defer 允许在 函数执行完之前或 return 执行完之后 推迟执行某一段代码,类似于其它语言中的 finally 关键字。
当有多个 defer 行为被注册时,它们会逆序执行(类似于栈)
Go 的内置函数
| 名称 | 说明 |
|---|---|
| close | 用于关闭管道通信 |
| len | 返回某个类型的长度或者数量(string, list, slice, map, channel) |
| cap | 返回某个类型的最大容量(map, channel) |
| new | new 用于值类型和用户定义的类型 |
| make | make 用于内置引用类型(slice, map, channel) |
| copy | 复制 |
| append | 连接切片 |
| panic | 错误处理 |
| recover | 错误处理 |
lambda 函数
当为了实现一个简单的函数的时候,可以在函数体中对一个函数进行不命名的定义。
1 | lambdaFunc := func (x, y int) int { |
或者可以直接调用 lambda 函数
1 | func (x, y int) int { |
工厂模式
一个返回值为另一个函数的函数可以称为工厂函数,在需要创建一系列相似的函数的时候很有用处。在 Python 中被称为高阶函数或者装饰器。如下:
1 | func MakeAddSuffix(suffix string) func(string) string { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xhj的博客!