--- title: "Go 开发中阶" date: 2018-12-29 lastmod: 2020-01-05 weight: 2 type: docs icon: # description: "中阶路线图" # search related keywords --- ![高校俱乐部](https://codechina.csdn.net/codechina/operation-work/uploads/53b24f5f44d3c851890b1789ed501001/%E9%AB%98%E6%A0%A1%E4%BF%B1%E4%B9%90%E9%83%A8320.jpg)

关注“高校俱乐部”微信公众号,回复“路线图”,快人一步获取高清全套技术路线图


{{< embed-pdf-view url="/images/go.pdf" >}} ### Go进阶 - 代码风格 - Go项目结构设计 - 统一Go代码风格 - 标识符命名规范 - 一致的Go变量声明形式 - 基础语法 - 使用无类型常量简化代码 - 如何定义”枚举常量“ - 定义”零值可用“的类型 - 高效运用切片 - 函数和方法 - init函数用途 - 巧用作为”一等公民“的函数 - 用defer简化代码逻辑 - Go方法的本质 - 方法集合与接口实现 - 变长参数的妙用 - 接口高级用法 - Go接口定义的惯例 - 空接口的”禁忌“ - 利用接口提升代码”可测性“ - 并发设计 - Go并发模型与常见并发模式 - channel的常见使用模式 - 正确使用sync包 - 恰当使用atomic包 - 错误处理 - Go的错误处理模式 - 消除过多的“if err != nil" - panic不是错误(panic is not an error) - 测试与调试 - 单元测试源码包名的选择 - 测试代码组织设计 - 采用“表驱动”的测试用例组织方法 - 管理测试依赖的外部数据文件的惯例 - Fake、Stub、Mock测试 - 建立性能测试基准 - 性能剖析利器pprof - Go调试利器delve - 与C的互操作 - cgo的原理与使用 - c中调用go代码 - go中调用c代码 - 了解使用cgo的成本 - 跨平台静态编译 - 反射与unsafe - 反射 - ValueOf - TypeOf - Elem - Interface - unsafe - unsafe包使用的六个原则 - 标准库 - 实现https通信 - tls - x509 - Socket网络编程模型 - net - 字符集编码转换 - unicode/utf8 - crypto下的密码学包 - cipher - aes - sha256 - hamac - ecdsa - 标准库读写模型 - io - 工具链与工程实践 - go module进阶 - 最小版本选择(MVS) - go module与vendor - go mod vendor - go build-mod=vendor - go.sum - go.mod - replace - exclude - go mod tidy - go module相关环境变量 - GOPROXY - GOSUMDB - GONOPROXY - GOPRIVATE - GONOSUMB - go module升级major版本号 - 定制个性化包导入路径 - Go工具链高级应用 - 获取与安装 - go get - go install - 检视module/包 - go list - 构建 - go build - gcflags - ldflags - tag - race - 跨平台交叉编译 - 静态代码检查 - go vet - golangci-lint - 运行与诊断 - GOGC - GODEBUG - 重构 - gofmt - gorename - gomvpkg - 代码导航与洞察 - gopls - 代码生成 - go generate ### Go设计哲学 - Go的起源与演化 - Go各个发布版本的特性 - Go设计哲学 - 简单 - 组合 - 并发 - 面向工程,自带“电池” ### Go原理 - Goroutine调度原理 - GPM模型 - 抢占式调度 - Channel调度原理 - Go内存管理 - Go内存模型 - 垃圾回收机制 - 连续栈原理 - 编译器优化 - 逃逸分析 - 内联优化 - Go各种原生类型在运行时的表示 - 数组 - 切片 - 字符串 - map - channel - 接口 - 空接口 - 非空接口 - cgo原理 - 反射原理