GO的学习

GO的学习

基础篇:

  1. 短变量的声明并初始化:使用":="编译器自动识别变量类型

  1. 变量交换与传统不同,并不需要出现一个临时变量用于交换而是直接 b, a=a,b

    3.匿名变量,在定义一个方法返回多个值但是只需要其中几个的时候可以使用"_"将另一个抛弃了

    这里隐藏b

    1. 局部变量可以和全局变量同一个名字 但是就近原则

    2. iota本身也是一个计数器 在不赋值的情况下会自动从0依次向上递增 如果赋了别的值下面的会和新赋的值相同除非再次赋值iota

    3. 无符号数是 uint 只能打印正数,一般不用。

    4. GO语言所有类型转换必须显示转换

      稍微进阶篇

      值传递和引用传递的区别

      值传递:只是将物理块1中的数值复制到2上因此改变2并不会改变1的值

      引用传递:将1的物理地址传给第二个参数使得两个参数指向同一个物理地址,因此改变参数就会改变1的值

      defer函数

      延迟执行的函数在出现多个的时候会逆向执行

      2023-02-10_154708

函数的本质

  1. 函数本身就是一个数据类型 在不加()的时候 函数就是一个变量,加了()就成了函数的调用

![](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)

既然函数在不加()时可以作为变量,那么就可以赋值给另一个函数

2023-02-10_220302

我们可以发现a1赋给了a5 同时他们指向的同一块物理地址。同时使用a5也能调用a1的值

  1. 匿名函数的自我调用以及返回传参

    匿名函数:不需要定义名字的函数

    既然函数本身就是一个变量那么匿名函数自己调用自己也可以实现,同时也能实现一般函数的功能,譬如传参、return

    2023-02-11_102332

    1. 函数能够被另一个函数所调用,调用别人函数的函数叫做高阶函数(好像很绕)感觉很难用言语解释 上图:

      2023-02-11_104058

      1. 函数的闭包结构

        在一个函数中再写入一个函数变成内外层,内层函数会操作外层函数的局部变量,外层函数的返回值就是这个内层函数。

        这样一来会使得局部变量的生命周期发生变化,原来会随着函数的调用而创建,随着函数的结束会销毁,但是现在不会,因为内层函数还在继续使用

      从上图可看经过三次调用是123,接下来我用另一个变量来调用这个函数会发现又变成了1

      2023-02-11_110238

      理论上来讲再调用一次m1应该从1 开始 可是现在从3继续了变成了4

为什么会这样呢?大概这就是所谓的闭包结构的力量?继续学习。。。

posted @ 2023-02-11 11:07  ...我才  阅读(28)  评论(0)    收藏  举报