- 编写一个函数,返回字符串"hello world"
- 重构函数,输入name,返回"hello name"
- 函数
- 函数的定义
- 函数的入参和返回值
- 私有和公共修饰符
- 变量
- 变量定义和赋值
- 常量
- if
- 编写基于整数的加减乘除运算函数,为了节省时间只实现Add和Div即可
- 重构Add使支持多个整数相加
- Add
- 数字溢出
- Div
- +Inf和-Inf
- NaN!=NaN
- 重构Add
- fori and forr
- slice和array是不同的类型,[3]int和[2]int也是不同类型
- 编写求长方形(rectangle)面积(Area)的函数
- 编写求圆形Circle:radius面积的函数
- 定义结构体来存储数据
- 定义结构体的方法
- 抽象接口Shape方法Area
- 如何定义和初始化结构体
- 字面量初始化和new
- 如何定义方法
- 如何定义接口
- 实现一个简单的钱包(Wallet)管理功能
- 可以给钱包存钱Deposit
- 可以从钱包取钱Withdraw
- 如果取钱时,资金Balance不够,则报错
- 实现年龄管理功能
- 对每个人的年龄+1
- 以slice的方式传递参数
- 以map的方式传递参数
- 值传递
- 如果需要重用结构体,则可以传递指针,避免copy导致的性能和数据不一致
- 支持多返回值,方法一般最后一个参数为error
- 对map的value修改需要重新赋值
------------高级特性-------------
- 同步调用服务获取结果
- 使用异步方式调用
- 基准测试同步和异步的差异
- go协程
- chan管道数据传输
- 同步控制
- 自带基准测试`go test -bench
- 实现自增+1功能
- 调用1000次自增计数
- 使用并发调用自增计数,使用锁确保正确性
- 使用基准测试,测试顺序自增和并发有锁自增结果
- go协程
- 锁
- 基准测试
- 简单计算器支持浮点运算
- 泛型可以减少反射的使用
- 定义结构体
- 获取结构体对应的类型和属性名称
- go特有的tag
json序列化和反序列化
实现结构体对象的json序列化和反序列化
查看go的json.Marshal()和json.Unmarshal()是如何实现的