首页 > 其他分享 >GO的学习

GO的学习

时间:2023-02-11 11:11:16浏览次数:38  
标签:调用 函数 学习 匿名 2023 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

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

标签:调用,函数,学习,匿名,2023,GO,变量
From: https://www.cnblogs.com/wocai/p/17111066.html

相关文章

  • 前端学习案例16-js中的HMR
    ......
  • 歌谣-jsp学习-web技术的前世今生1
    Web服务器•1990年,第一个Web服务器开始运行•网站服务器•站点服务器•本质上是一个软件系统•安装了web服务器软件的计算机为什么没有流传•操作太复杂•页面不好看•……......
  • 750~751 JSP脚本,入门学习
    JSP的脚本:JSP定义Java代码的方式1.<% 代码%>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。2.<%!代码%>:定义的java......
  • 机器学习-Kmeans
    前言K-means是一种经典的无监督学习算法,用于对数据进行聚类。K-means算法将数据集视为具有n个特征的n维空间,并尝试通过最小化簇内平方误差的总和来将数据点划分为簇。本文......
  • 斯特林数学习笔记
    斯特林数学习笔记注:本篇只为作者自己看懂,方便以后复习。注意:如无特殊说明,以下公式的范围皆为\(n\ge0\)且\(n\)为整数。因为我太菜啦,所以很多东西都只有最浅显的部分......
  • c++学习6 指针变量
    一指针变量的定义*是用来修饰指针变量的,通常情况下我们定义的手法都是“类型名”+“*”+“指针变量名称”。有一种简单无脑的“替换法”,作用是防止小括号遗漏而导致定义出......
  • Python 学习爬虫---更改目录位置以及创建新文件
    学习爬虫第N天 今天想着将爬虫获取到的内容放在桌面,所以去学习了下os的操作。 学习如下:importos,os.path (经常性喜欢将文件放在桌面来查看......
  • 《分布式技术原理与算法解析》学习笔记Day07
    分布式锁什么是分布式锁?为了实现分布式互斥,我们需要在某个地方做个标记,这个标记是每个线程都可以看到,当标记不存在时可以设置该标记,当标记被设置后,其他线程只能等待拥有......
  • Java学习之File类的删除功能
    publicbooleandelete()删除由此抽象路径名表示的文件或目录绝对路径和相对路径的区别绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件,例如:/Users/St......
  • 我的2022——有点卷、没学习、还羊了
    夜幕下的北京,迎来全新的一年,屏幕前的我,又到了该做年终总结的时候了。MacBook的摄像头像Moss一样,注视着我,注视着红尘。在Moss的眼中,可能所有的悲欢离合都没有什么大不了,世间......