GO的学习
基础篇:
- 短变量的声明并初始化:使用":="编译器自动识别变量类型
-
变量交换与传统不同,并不需要出现一个临时变量用于交换而是直接 b, a=a,b
3.匿名变量,在定义一个方法返回多个值但是只需要其中几个的时候可以使用"_"将另一个抛弃了
这里隐藏b
-
局部变量可以和全局变量同一个名字 但是就近原则
-
iota本身也是一个计数器 在不赋值的情况下会自动从0依次向上递增 如果赋了别的值下面的会和新赋的值相同除非再次赋值iota
-
无符号数是 uint 只能打印正数,一般不用。
-
GO语言所有类型转换必须显示转换
稍微进阶篇
值传递和引用传递的区别
值传递:只是将物理块1中的数值复制到2上因此改变2并不会改变1的值
引用传递:将1的物理地址传给第二个参数使得两个参数指向同一个物理地址,因此改变参数就会改变1的值
defer函数
延迟执行的函数在出现多个的时候会逆向执行
-
函数的本质
- 函数本身就是一个数据类型 在不加()的时候 函数就是一个变量,加了()就成了函数的调用
![](C:\Users\Administrator\Desktop\markdown文件\images\2023 2.7\2023-02-10_191139.png)
![](C:\Users\Administrator\Desktop\markdown文件\images\2023 2.7\2023-02-10_191150.png)
既然函数在不加()时可以作为变量,那么就可以赋值给另一个函数
我们可以发现a1赋给了a5 同时他们指向的同一块物理地址。同时使用a5也能调用a1的值
-
匿名函数的自我调用以及返回传参
匿名函数:不需要定义名字的函数
既然函数本身就是一个变量那么匿名函数自己调用自己也可以实现,同时也能实现一般函数的功能,譬如传参、return
-
函数能够被另一个函数所调用,调用别人函数的函数叫做高阶函数(好像很绕)感觉很难用言语解释 上图:
-
函数的闭包结构
在一个函数中再写入一个函数变成内外层,内层函数会操作外层函数的局部变量,外层函数的返回值就是这个内层函数。
这样一来会使得局部变量的生命周期发生变化,原来会随着函数的调用而创建,随着函数的结束会销毁,但是现在不会,因为内层函数还在继续使用
从上图可看经过三次调用是123,接下来我用另一个变量来调用这个函数会发现又变成了1
理论上来讲再调用一次m1应该从1 开始 可是现在从3继续了变成了4
-
-
为什么会这样呢?大概这就是所谓的闭包结构的力量?继续学习。。。
标签:调用,函数,学习,匿名,2023,GO,变量 From: https://www.cnblogs.com/wocai/p/17111066.html