版权声明:诸葛老刘所有 https://blog.csdn.net/weixin_39791387/article/details/86496261
本文适合对GO的基本语法有所了解的人阅读
- 函数的使用
- 定义多个返回值,甚至对其命名
package main
import (
"fmt"
"errors"
)
func div(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}
func main() {
a, b := 10, 0 //定义多个变量
c, err := div(a, b) // 接收多个变量
fmt.Println(c, err)
}
- 函数是第一类型, 可作为参数或返回值
类似于python的装饰器, 现在了解还不能深入, 不知道能不能使用语法糖, 回头更新
package main
import (
"fmt"
)
func test(x int) func() { // 返回函数类型
return func() { // 匿名函数
fmt.Println(x) // 闭包
}
}
func main() {
x := 100
f := test(x)
f()
}
- 用defer定义延迟调用,无论函数是否出错, 它都确保结束前被调用.
package main
import (
"fmt"
)
func test(x, y int){
defer fmt.Println("dispose...") // 常用来想法释放资源, 解除锁定或执行一些清理操作
// 可定义多个defer操作, 按FILO()顺序执行
fmt.Println(x / y)
}
func main() {
x, y := 100 ,0
test(x, y)
}
后进先出(Last In First Out,简称LIFO)
先进后出(First In Last Out,简称FILO)