小册描述
目录
- 上下文
- 上下文和普通参数的区别
- 上下文树
- 上下文接口——Context
- 利用context.emptyCtx创建树的根节点
- 上下文树的构建
- 利用valueCtx实现信息透传
- valueCtx用于参数传递
- 从父节点获得透传值
- 利用cancelCtx通知协程终止执行
- 通知子协程终止执行
- 通知子协程的实现过程
- 为什么需要取消函数
- 利用timerCtx实现定时取消
- 调用context.WithDeadline()创建定时器上下文
- 调用context.WithTimeout()创建定时器上下文
- 编程范例——上下文的典型应用场景
- 利用结构体传递参数
- valueContext为什么需要key
- 利用cancelCtx同时取消多个子协程
- 反射
- 反射的意义
- 反射的API
- 利用reflect.TypeOf()来获得类型信息
- 利用reflect.Type.Kind()方法来获取类型的具体分类
- 利用reflect.Type.Element()方法来获取元素类型
- 类型断言的用法与局限性
- 值信息
- 利用reflect.ValueOf()来获得值信息
- 利用reflect.Value.Kind()来获得值的分类信息
- 利用reflect.Value.Elem()来获得值的元素信息
- 利用反射访问和修改值信息
- 利用反射机制动态调用方法
- 编程范例——动态方法调用
- 泛型
- 泛型的意义
- 泛型应用到函数
- 泛型函数的使用
- 泛型中的隐含信息
- 避免类型强制转换
- 泛型类型的单独定义
- 泛型导致接口定义的变化
- 接口定义的变化
- 空接口的二义性
- 接口类型的限制
- 泛型类型应用到receiver
- 泛型类型不能直接用于定义receiver
- 间接实现泛型定义receiver
- 编程范例——自定义队列的实现