golang入门基础
来源:互联网 发布:ubuntu mate树莓派 编辑:程序博客网 时间:2024/05/16 01:01
1:函数实现(传值接受者和传指针接受者的使用场景)
传值:——》副本 只读,不可修改
传指针:—-》引用,可修改
2:命名:字母或下划线开头
3:可见性与不可见
命名首字母大写:包内包外均可见
命名首字母小写:只在包内可见
4:变量定义初始化几种方式
var 变量名 类型 = 表达式
var 变量名 = 表达式
变量名 := 表达式
5:指针的++
是增加指针指针所指向的变量的值,并非增加指针
6:垃圾自动回收
从每个包级的变量和每个当前运行的函数的每一个局部变量开始,通过指针或者引用的访问
路径遍历,是否可以找到该变量,如果不存在这样的访问路径,那么说明该变量是不可大的,也
就是说它是否存在并不会程序后续的计算结果
因为一个变量的有效周期只取决于是否可达,因此一个循环迭代内部的局部变量的生存周期
可能超出其局部作用域。同时,局部变量可能在函数返回之后依然存在
7:包的init函数
除了无法被调用或引用之外,其他行为和普通函数类似
在main函数执行之前,所有依赖的包都已经完成初始化
8:常量
所有常量的运算都可以在编译期完成(作用:可减少运行时的工作,也方便编译优化)
定义常量组如果不适用itoa常亮生成器语法或者指定常量的值,那么所有常亮的值都相同
9:复合类型
数组和结构体是有固定内存大小的数据结构
slice和map则是动态数据结构(需要动态增长)
数组:数组长度是数组类型的一个组成部分,所以[3]int和[5]int是不一样的两种类型
10:slice
测试一个slice是否为空,使用len()==0来判断,而不要使用s==nil来判断,因为一个nil
值的slice的行为和其他任意0长度的slice一样
在底层,make创建了一个匿名的数组变量,然后返回一个slice;只有通过返回的slice才能引用底层匿名
数组变量。
11:map
不能对元素取地址的原因:
1:map中的元素是常量,不能取地址
2:禁止对map元素去地址的原因,可能map随着元素数量的增长而重新分配更大的内存空间,从而导致之
前的地址无效
12:接口
接口类型是对其他类型行为的抽象和概括
多态:接口+方法(同名)
一个不包含任何值的nil接口值和一个刚好包含nil指针的接口值 不相同
13:channels
不带缓存的、串联的、单方向的、带缓存的
不带缓存的:会导致goroutine阻塞(接收者收到数据发生在唤醒发送者goroutine之前)
串联的channels:用于将多个goroutine连接在一起,上一个channels作为下一个channels的输入
14:并发
并行:同时做好多事
并发:同时管理很多事
并发的实现:利用通道实现不加锁的数据传递
消除竟态的方式:原子函数,锁,通道
- Golang基础入门
- golang入门基础
- golang入门篇-基础类型
- golang基础
- Golang 基础
- Golang import使用入门
- Golang Import使用入门
- 【Mark】Golang入门
- golang---redis入门
- Golang context包入门
- Golang快速入门
- Golang 入门Hello World
- golang CI 入门
- golang websocket 入门
- Golang学习[基础]
- GoLang学习基础笔记
- golang 并发编程基础
- Golang基础学习总结
- 归并排序
- Blued完成C和C+数亿元融资 Zank你怕了吗?
- 多线程3
- Linux 系统管理
- 深港澳汽车展:新能源、新技术汽车还有待发展
- golang入门基础
- js 转换时间戳的写法
- “国产最长寿手机”,金立靠什么?
- 支付宝六一强加“宝宝” 你拍砖还是点赞?
- Uber获35亿美元投资,无人驾驶汽车竞赛持续升级|智驾周刊
- 再说AI会威胁人类,一定是你没看这些|AI科技评论周刊
- 学习总结——android的消息机制handler
- 你离能够拥有一个“强AI”女友还有多久?让专家告诉你
- Java中throws和throw的区别讲解