---
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原理
- 反射原理