这是我参与「第三届青训营 -后端场」笔记创作活动的的第 1 篇笔记
一、 Go语言有哪些特性
- 高性能、高并发
- 语法简单、学习曲线平缓
- 丰富的标准库
- 完善的工具链
- 静态链接
- 快速编译
- 跨平台
- 垃圾回收
二、 Go语言入门
1. 变量
变量声明:
1. var 变量名 = value 会自动推导变量类型
2. 变量名 := 值
常量声明:
1. const 常量名 = value 常量没有确定的类型,会根据使用的上下文自动确定类型
2. if else
1. if 后的条件判断可以省略 ()
1. if 后必须有 {}
3. 循环
1. golang 中只有for循环
4. switch分支结构
1. golang 不需要加 break
2. 可以使用任意的变量类型,甚至可以用来取代任意的if else语句
5. 数组
1. 数组就是一个具有编号且长度固定的元素序列
2. 因为它的长度是固定的,更多的用切片
6. 切片
1. 实际上是它存储了一个长度和容量,加一个指向一个数组的指针
2. 不支持负数索引
7. map
1. golang 中 map 是无序的
8. range
1. 对于一个 slice 或者一个 map 的,可以用 range 来快速遍历,这样代码能够更加简洁
2. range 遍历的时候,对于数组会返回两个值,第一个是索引,第二个是对应位置的值
3.不需要索引的话,我们可以用下划线来忽略
9. 函数
1. Golang和其他很多语言不一样的是,变量类型是后置的
2. 在实际的业务逻辑代码里面几乎所有的函数都返回两个值,第一个是真正的返回结果,第二个值是一个错误信息
10. 指针
1. 指针的一个主要用途就是对于传入参数进行修改
2. 为了类型匹配,调用的时候会加一个 & 符号
11. 结构体
1. 结构体的名称去初始化一个结构体变量,构造的时候需要传入每个字段的初始值
2. 也可以用键值对的方式去指定初始值
3. 结构体也支持指针
12. 结构方法
参数,加上括号,写到函数名称前面
带指针
`func (u user) ...`
13. 错误处理
go 语言是使用一个单独的返回值来传递错误信息
go语言的处理方式,能够很清晰地知道哪个函数返回了错误,并且能用简单的if else来处理错误
14. 字符串操作
contains: 判断一个字符里面是否包含另一个字符
count: 字符串计数
index: 查找某个字符串的位置
join: 连接多个字符串
repeat: 重复多个字符串
replace: 替换字符串
......
15. JSON处理
一个已有的结构体,只要每个字段的第一个字母大写,也就是公开字段,这个结构体就能用 JSON.marshaler 序列化
用 JSON.unmarshaler 去反序列化
16. 数字处理
字符串和数字类型之间的转换都在 strconv 包下
17. 进程信息
用 os.argv 来得到程序执行的时候的指定的命令行参数