🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 小节 1. Go语言中声明函数以关键词func为标识 2. Go语言支持可变参数的特性,函数声明可以没有固定数量的参数 3. 匿名函数需要在函数定义时定义函数,匿名函数能以变量的形式传递,常常用于实现闭包。 4. 闭包就是包含了自由变量的匿名函数,其中的自由变量即使脱离了自由变量的环境也不会被删除,在闭包的作用域内可以继续使用这个自由变量。 5. defer语句是在当前函数即将返回是被调用,所有常常使用defer来释放资源。 ### 扩展·函数传递参数的本质 值传递:将变量的一个副本传递给函数,不管怎么操作该副本都不会改变原来变量的值 引用传递:将变量的内存地址传递给函数,操作该变量是会找到原变量的地址,对其操作会改变原变量的值 对于int,string和bool传的是原变量的副本。 对于指针,切片,map和channel(通道)传递的是原变量指针的副本,指针指向原变量地址。 ``` package main import "fmt" //值传递函数 func Byvalue(num int) { fmt.Println("Byvalue函数中num变量地址", &num) num = 100 } //引用传递函数 func Byre(num *int) { fmt.Println("Byre函数中指针变量num地址", &num) fmt.Println("Byre函数中指针变量指向地址为", &num) *num = 100 } func main() { nums := 1 fmt.Println("nums的地址为", &nums) Byvalue(nums) fmt.Println("nums变量的值为", nums) Byre(&nums) fmt.Println("nums变量的值为", nums) } 结果: nums的地址为 0xc000012098 Byvalue函数中num变量地址 0xc0000120d0 nums变量的值为 1 Byre函数中指针变量num地址 0xc000006030 Byre函数中指针变量指向地址为 0xc000006030 nums变量的值为 100 ``` 懂了,传指针的话,是可以改值的。原来如此 ### Go语言内置函数 参考:https://www.cnblogs.com/-wenli/p/12573751.html | 内置函数 | 功能 | | --- | --- | | append | 将数据追加到 slice 的末尾,返回一个slice | | copy | 将源slice的数据复制到目标slice中,当目标slice的空间不够时会舍弃超出的部分,返回的是复制成功的元素个数 | | delete | 删除map中的键值对| | len | 计算数组,slice,map,channel等类型的长度 | | cap | 计算数组,slice,map,channel等类型长度 | | make | 为slice ,map或者channel类型分配内存并初始化对象 | | new | 为slice ,map或者channel以外类型分配内存并初始化对象 ,返回指针类型| | complex | 构建复数 | | real | 返回复数的实部 | | imag | 返回复数的虚部 | | close | 用于关闭channel | | panic | 触发宕机 | | recover | 捕获panic内置函数抛出的异常信息 | | print | 打印标准输出,结尾没有换行符 | | println | 打印标准输出,结尾有换行符 | | printf | |