主题
源码索引
按知识地图顺序列出每篇文章的全部已核验源文件。先阅读文章的环境、依赖和运行限制;文件按原目录保存,共享 helper 只收录一份,但会在每篇使用它的文章下列出。按附录重建文件时,以附录的文件名和目录结构为准。
01-01 Go 类型系统
- examples/01_types/go.mod
- examples/01_types/main.go
- examples/01_types/main_test.go
- examples/01_types/testdata/compile_fail.go
01-02 Go 结构体与方法
- examples/02_structs/go.mod
- examples/02_structs/main.go
- examples/02_structs/main_test.go
- examples/02_structs/testdata/compile_fail.go
- examples/02_structs/testdata/vet_fail.go
01-03 Go 接口
- examples/03_interfaces/go.mod
- examples/03_interfaces/main.go
- examples/03_interfaces/main_test.go
- examples/03_interfaces/testdata/compile_fail.go
01-04 Go 函数
- examples/01_functions/functions/go.mod
- examples/01_functions/functions/main.go
- examples/01_functions/functions/main_test.go
- examples/01_functions/functions/testdata/compare/main.go
- examples/01_functions/functions/testdata/mixed/main.go
- examples/01_functions/functions/testdata/anyslice/main.go
01-05 Go 错误处理
- examples/01_functions/errors/go.mod
- examples/01_functions/errors/main.go
- examples/01_functions/errors/main_test.go
- examples/01_functions/errors/testdata/asbad/main.go
- examples/01_functions/errors/testdata/goroutine/main.go
01-06 Go 泛型
- examples/01_functions/generics/go.mod
- examples/01_functions/generics/main.go
- examples/01_functions/generics/main_test.go
- examples/01_functions/generics/testdata/anyadd/main.go
- examples/01_functions/generics/testdata/exact/main.go
- examples/01_functions/generics/testdata/interfacevalue/main.go
- examples/01_functions/generics/testdata/inferresult/main.go
- examples/01_functions/generics/testdata/literal/main.go
- examples/01_functions/generics/testdata/interfacemethod/main.go
- examples/01_functions/generics/testdata/typeinfer/main.go
01-07 Go 迭代器
- examples/01_stdlib/iterators/go.mod
- examples/01_stdlib/iterators/main.go
- examples/01_stdlib/iterators/main_test.go
- examples/01_stdlib/iterators/testdata/oldversion/go.mod
- examples/01_stdlib/iterators/testdata/oldversion/main.go
- examples/01_stdlib/iterators/testdata/badprotocol/go.mod
- examples/01_stdlib/iterators/testdata/badprotocol/main.go
01-08 Go 包与可见性
- examples/01_stdlib/packages/go.mod
- examples/01_stdlib/packages/base/base.go
- examples/01_stdlib/packages/config/a.go
- examples/01_stdlib/packages/config/b.go
- examples/01_stdlib/packages/counter/counter.go
- examples/01_stdlib/packages/service/internal/token/token.go
- examples/01_stdlib/packages/service/api/api.go
- examples/01_stdlib/packages/app/app.go
- examples/01_stdlib/packages/store/store.go
- examples/01_stdlib/packages/cmd/demo/main.go
- examples/01_stdlib/packages/app/app_test.go
- examples/01_stdlib/packages/testdata/badinternal/main.go
- examples/01_stdlib/packages/testdata/badexport/main.go
- examples/01_stdlib/packages/testdata/cycle/a/a.go
- examples/01_stdlib/packages/testdata/cycle/b/b.go
01-09 Go 标准库必熟
- examples/01_stdlib/stdlib/go.mod
- examples/01_stdlib/stdlib/main.go
- examples/01_stdlib/stdlib/main_test.go
- examples/01_stdlib/stdlib/testdata/vetbad/main.go
- examples/01_stdlib/stdlib/testdata/exitdemo/main.go
- examples/01_stdlib/stdlib/testdata/oldtimer/go.mod
- examples/01_stdlib/stdlib/testdata/oldtimer/main.go
- examples/01_stdlib/stdlib/testdata/removeddebug/go.mod
- examples/01_stdlib/stdlib/testdata/removeddebug/main.go
01-10 Go 反射 unsafe cgo 与代码生成
- examples/01_stdlib/reflecttools/go.mod
- examples/01_stdlib/reflecttools/reflectdemo/main.go
- examples/01_stdlib/reflecttools/reflectdemo/main_test.go
- examples/01_stdlib/reflecttools/unsafedemo/main.go
- examples/01_stdlib/reflecttools/unsafedemo/main_test.go
- examples/01_stdlib/reflecttools/cgodemo/main.go
- examples/01_stdlib/reflecttools/cgodemo/main_test.go
- examples/01_stdlib/reflecttools/embeddemo/main.go
- examples/01_stdlib/reflecttools/embeddemo/main_test.go
- examples/01_stdlib/reflecttools/embeddemo/assets/hello.txt
- examples/01_stdlib/reflecttools/embeddemo/assets/.hidden
- examples/01_stdlib/reflecttools/embeddemo/assets/_draft
- examples/01_stdlib/reflecttools/embeddemo/assets/nested/note.txt
- examples/01_stdlib/reflecttools/embeddemo/assets/nested/.hidden
- examples/01_stdlib/reflecttools/gendemo/main.go
- examples/01_stdlib/reflecttools/gendemo/message.txt
- examples/01_stdlib/reflecttools/gendemo/internal/gen/main.go
- examples/01_stdlib/reflecttools/gendemo/greeting_gen.go
- examples/01_stdlib/reflecttools/testdata/unsafe_bad/main.go
- examples/01_stdlib/reflecttools/testdata/cgo_bad/main.go
- examples/01_stdlib/reflecttools/testdata/embed_missing/main.go
- examples/01_stdlib/reflecttools/testdata/embed_escape/main.go
- examples/01_stdlib/reflecttools/verify.sh
02-01 Goroutine
- examples/02/01_goroutine/go.mod
- examples/02/01_goroutine/main.go
- examples/02/01_goroutine/main_test.go
02-02 Channel
02-03 context
02-04 sync 包
02-05 Go 并发模式
- examples/02/05_patterns/go.mod
- examples/02/05_patterns/go.sum
- examples/02/05_patterns/main.go
- examples/02/05_patterns/main_test.go
02-06 Go 内存模型
- examples/02/06_memory/go.mod
- examples/02/06_memory/main.go
- examples/02/06_memory/main_test.go
- examples/02/06_memory/race_demo_test.go
02-07 Go 并发常见坑
- examples/02/07_pitfalls/go.mod
- examples/02/07_pitfalls/main.go
- examples/02/07_pitfalls/main_test.go
- examples/02/07_pitfalls/copylock_bad.go
- examples/02/07_pitfalls/legacy/main.go
- examples/02/07_pitfalls/legacy/go.mod
02-08 Go 并发工具选型
- examples/02/08_extensions/go.mod
- examples/02/08_extensions/go.sum
- examples/02/08_extensions/main.go
- examples/02/08_extensions/main_test.go
03-01 什么是GMP
03-02 Go 内存分配
- examples/03/allocation/go.mod
- examples/03/allocation/main.go
- examples/03/allocation/main_test.go
- examples/03/allocation/stack/main.go
03-03 逃逸分析
03-04 Go 垃圾回收
03-05 Go 数据结构实现
- examples/03/structures/go.mod
- examples/03/structures/main.go
- examples/03/structures/main_test.go
- examples/03/structures/negative/mapaddr.go.txt
03-06 Go defer select timer 与 netpoller
- examples/03/mechanisms/go.mod
- examples/03/mechanisms/main.go
- examples/03/mechanisms/main_test.go
- examples/03/mechanisms/compat/oldmodule/go.mod
- examples/03/mechanisms/compat/oldmodule/main.go
- examples/03/mechanisms/negative/removed/go.mod
- examples/03/mechanisms/negative/removed/main.go
04-01 Go 模块管理
- examples/04/run_modules.sh
- examples/04/modules/mvs/alpha/go.mod
- examples/04/modules/mvs/app/go.mod
- examples/04/modules/mvs/beta/go.mod
- examples/04/modules/mvs/shared/go.mod
- examples/04/modules/text/go.mod
- examples/04/modules/text/go.sum
- examples/04/modules/text/main.go
- examples/04/modules/work/app/go.mod
- examples/04/modules/work/app/main.go
- examples/04/modules/work/go.work
- examples/04/modules/work/greeting/go.mod
- examples/04/modules/work/greeting/greeting.go
04-02 Go 项目结构
- examples/04/run_layout.sh
- examples/04/layout/cycle/a/a.go
- examples/04/layout/cycle/b/b.go
- examples/04/layout/cycle/go.mod
- examples/04/layout/outsider/go.mod
- examples/04/layout/outsider/main.go
- examples/04/layout/shop/cmd/preview/main.go
- examples/04/layout/shop/go.mod
- examples/04/layout/shop/internal/httpapi/handler.go
- examples/04/layout/shop/internal/order/order.go
04-03 Go 测试
- examples/04/run_testing.sh
- examples/04/testing/failure_test.go
- examples/04/testing/go.mod
- examples/04/testing/integration_test.go
- examples/04/testing/quote.go
- examples/04/testing/quote_test.go
04-04 Go 代码质量
- examples/04/run_quality.sh
- examples/04/quality/badlogic/discount.go
- examples/04/quality/badlogic/discount_test.go
- examples/04/quality/badlogic/go.mod
- examples/04/quality/badvet/go.mod
- examples/04/quality/badvet/main.go
04-05 Go 配置管理
04-06 Go 结构化日志
- examples/04/logging/cmd/demo/main.go
- examples/04/logging/go.mod
- examples/04/logging/logging.go
- examples/04/logging/logging_test.go
04-07 Go 依赖注入
04-08 Go 构建与发布
- examples/04/run_build.sh
- examples/04/build/app/Makefile
- examples/04/build/app/Taskfile.yml
- examples/04/build/app/flavor_default.go
- examples/04/build/app/flavor_enterprise.go
- examples/04/build/app/go.mod
- examples/04/build/app/main.go
- examples/04/build/app/main_test.go
- examples/04/build/app/schema_gen.go
- examples/04/build/app/tools/gen/main.go
- examples/04/build/cgodemo/go.mod
- examples/04/build/cgodemo/main.go
04-09 设计原则
04-10 Go 工程工具选型
- examples/04/run_tools.sh
- examples/04/tools/cli/go.mod
- examples/04/tools/cli/go.sum
- examples/04/tools/cli/main.go
- examples/04/tools/cli/main_test.go
- examples/04/tools/configlog/go.mod
- examples/04/tools/configlog/go.sum
- examples/04/tools/configlog/main.go
- examples/04/tools/configlog/main_test.go
- examples/04/tools/recipes/.air.toml
- examples/04/tools/recipes/.golangci.yml
- examples/04/tools/recipes/.goreleaser.yaml
- examples/04/tools/recipes/containers/go.mod
- examples/04/tools/recipes/containers/redis_test.go
- examples/04/tools/recipes/wire/app.go
- examples/04/tools/recipes/wire/go.mod
- examples/04/tools/recipes/wire/wire.go
05-01 计算机网络
05-02 操作系统
05-03 Linux
- examples/05/linux/lab.sh
- examples/05/linux/inspect_self.py
- examples/05/linux/teaching-demo.service
- examples/05/linux/diagnostic-entrypoints.sh
05-04 数据结构与算法
06-01 net-http
06-02 RESTful 设计
- examples/06/02_rest/go.mod
- examples/06/02_rest/rest_test.go
- examples/06/02_rest/teaching_test.go
- examples/06/02_rest/openapi.json
06-03 Go 请求处理
- examples/06/03_request/go.mod
- examples/06/03_request/request_test.go
- examples/06/03_request/teaching_test.go
06-04 Go HTTP 中间件
- examples/06/04_middleware/go.mod
- examples/06/04_middleware/middleware_test.go
- examples/06/04_middleware/teaching_test.go
06-05 RPC 与 gRPC
- examples/06/05_grpc/go.mod
- examples/06/05_grpc/go.sum
- examples/06/05_grpc/grpc_test.go
- examples/06/05_grpc/stream_test.go
- examples/06/05_grpc/modes.proto
06-06 WebSocket GraphQL 与 Webhook
- examples/06/06_webhook/go.mod
- examples/06/06_webhook/go.sum
- examples/06/06_webhook/webhook_test.go
- examples/06/06_webhook/protocols_test.go
06-07 Go Web 与 RPC 工具选型
- examples/06/07_tools/go.mod
- examples/06/07_tools/go.sum
- examples/06/07_tools/tools_test.go
- examples/06/07_tools/teaching_test.go
- examples/06/07_tools/models.gen.go
- examples/06/07_tools/generate.sh
- examples/06/07_tools/contract/openapi.yaml
- examples/06/07_tools/contract/oapi.yaml
- examples/06/07_tools/contract/swag/main.go
- examples/06/07_tools/contract/swag/docs/swagger.json
- examples/06/07_tools/buf.yaml
- examples/06/07_tools/proto/users/v1/users.proto
07-01 SQL 基础
- examples/07/01_sql/basics.sql
- examples/07/01_sql/constraint_failure.sql
- examples/07/common/run_single.py
07-02 数据库索引
07-03 数据库事务
- examples/07/03_transactions/transactions.sql
- examples/07/common/run_single.py
- examples/07/03_transactions/verify_transactions.py
07-04 MySQL
07-05 PostgreSQL
- examples/07/05_postgresql/postgresql.sql
- examples/07/common/run_single.py
- examples/07/05_postgresql/monitor.sql
07-06 Go 数据访问
- examples/07/06_access/go.mod
- examples/07/06_access/access.go
- examples/07/06_access/access_test.go
- examples/07/06_access/injection.py
07-07 数据库扩展性
07-08 NoSQL 与专用存储
07-09 Go 数据库工具选型
- examples/07/09_tools/go.mod
- examples/07/09_tools/go.sum
- examples/07/09_tools/main.go
- examples/07/09_tools/main_test.go
08-01 Redis 数据结构
08-02 Redis 原理
08-03 缓存模式
08-04 缓存三大问题
- examples/08/stampede/go.mod
- examples/08/stampede/go.sum
- examples/08/stampede/main.go
- examples/08/stampede/main_test.go
08-05 Redis 缓存进阶
08-06 Go 缓存工具选型
- examples/08/with-redis.sh
- examples/08/tools/go.mod
- examples/08/tools/go.sum
- examples/08/tools/main.go
- examples/08/tools/main_test.go
09-01 消息队列核心概念
09-02 消息队列可靠性
- examples/09/02_reliability/go.mod
- examples/09/02_reliability/main.go
- examples/09/02_reliability/main_test.go
- examples/09/02_reliability/negative_test.go
09-03 Kafka
09-04 消息队列其他选型
09-05 消息队列应用模式
09-06 Go 消息与工作流工具选型
- examples/09/06_tools/go.mod
- examples/09/06_tools/go.sum
- examples/09/06_tools/main.go
- examples/09/06_tools/workflow.go
- examples/09/06_tools/main_test.go
- examples/09/06_tools/workflow_test.go
10-01 分布式理论基础
10-02 共识算法
10-03 服务治理
10-04 分布式事务
- examples/10/transactions/go.mod
- examples/10/transactions/main.go
- examples/10/transactions/main_test.go
10-05 分布式基础组件
10-06 数据分布
- examples/10/distribution/go.mod
- examples/10/distribution/main.go
- examples/10/distribution/main_test.go
10-07 微服务拆分方法
- examples/10/decomposition/go.mod
- examples/10/decomposition/main.go
- examples/10/decomposition/main_test.go
10-08 Go 微服务治理工具选型
11-01 稳定性手段
- examples/11/01_stability/go.mod
- examples/11/01_stability/main.go
- examples/11/01_stability/main_test.go
11-02 幂等设计
- examples/11/02_idempotency/go.mod
- examples/11/02_idempotency/main.go
- examples/11/02_idempotency/main_test.go
- examples/11/02_idempotency/schema.sql
11-03 高并发手段
- examples/11/03_concurrency/go.mod
- examples/11/03_concurrency/main.go
- examples/11/03_concurrency/main_test.go
11-04 容量与弹性
- examples/11/04_capacity/go.mod
- examples/11/04_capacity/main.go
- examples/11/04_capacity/main_test.go
- examples/11/04_capacity/hpa.yaml
11-05 容灾
11-06 发布安全
- examples/11/06_release/go.mod
- examples/11/06_release/main.go
- examples/11/06_release/main_test.go
- examples/11/06_release/deployment.yaml
11-07 可靠性度量
- examples/11/07_measurement/go.mod
- examples/11/07_measurement/main.go
- examples/11/07_measurement/main_test.go
11-08 Go 稳定性与压测工具选型
- examples/11/08_tools/go.mod
- examples/11/08_tools/main.go
- examples/11/08_tools/main_test.go
- examples/11/08_tools/cmd/target/main.go
- examples/11/08_tools/cmd/target/main_test.go
- examples/11/08_tools/k6.js
- examples/11/08_tools/run-loads.sh
- examples/11/08_tools/verify-fixture-guard.py
- examples/11/08_tools/install-tools.sh
- examples/11/08_tools/go.sum
12-01 认证
12-02 授权
12-03 常见安全漏洞
12-04 密码学应用
12-05 接口安全
12-06 供应链与运行时安全
12-07 Go 安全工具选型
- examples/12/07/go.mod
- examples/12/07/go.sum
- examples/12/07/main.go
- examples/12/07/main_test.go
- examples/12/07/model.conf
- examples/12/07/scanfixture/fixture.go
13-01 可观测性三大支柱
13-02 OpenTelemetry
13-03 告警设计
- examples/13/alerts/go.mod
- examples/13/alerts/main.go
- examples/13/alerts/main_test.go
- examples/13/alerts/rules.yml
- examples/13/alerts/alertmanager.yml
13-04 持续剖析
- examples/13/profiling/go.mod
- examples/13/profiling/main.go
- examples/13/profiling/main_test.go
- examples/13/profiling/run.sh
13-05 故障复盘
- examples/13/postmortem/go.mod
- examples/13/postmortem/main.go
- examples/13/postmortem/main_test.go
- examples/13/postmortem/synthetic.json
13-06 Go 可观测性工具选型
- examples/13/tools/go.mod
- examples/13/tools/config.json
- examples/13/tools/main.go
- examples/13/tools/main_test.go
- examples/13/tools/run.sh
14-01 pprof
- examples/14/pprof/go.mod
- examples/14/pprof/main.go
- examples/14/pprof/main_test.go
- examples/14/pprof/run.sh
14-02 Go trace
- examples/14/trace/go.mod
- examples/14/trace/main.go
- examples/14/trace/main_test.go
- examples/14/trace/run.sh
14-03 Go 基准测试
- examples/14/bench/go.mod
- examples/14/bench/build_base.go
- examples/14/bench/build_opt.go
- examples/14/bench/build_test.go
- examples/14/bench/run.sh
14-04 Go 常见优化点
- examples/14/optimize/go.mod
- examples/14/optimize/optimize.go
- examples/14/optimize/optimize_test.go
- examples/14/optimize/run.sh
14-05 Go 典型故障排查
- examples/14/faults/go.mod
- examples/14/faults/main.go
- examples/14/faults/main_test.go
- examples/14/faults/run.sh
14-06 Go 调试
- examples/14/debug/go.mod
- examples/14/debug/main.go
- examples/14/debug/main_test.go
- examples/14/debug/check.py
- examples/14/debug/run.sh
- examples/14/debug/dlv-commands.txt
14-07 Go 性能诊断工具选型
- examples/14/tools/go.mod
- examples/14/tools/go.sum
- examples/14/tools/main.go
- examples/14/tools/main_test.go
- examples/14/tools/run.sh
15-01 容器与 Docker
- examples/15/01/go.mod
- examples/15/01/main.go
- examples/15/01/main_test.go
- examples/15/01/Dockerfile
- examples/15/01/.dockerignore
- examples/15/01/Dockerfile.bad
- examples/15/01/layer_demo.py
- examples/15/01/verify.sh
- examples/15/01/fake-token.txt
15-02 Kubernetes
- examples/15/02/app.yaml
- examples/15/02/selector-bad.yaml
- examples/15/02/check.py
- examples/15/02/requirements.txt
- examples/15/02/verify.sh
15-03 Go 在容器中
- examples/15/03/go.mod
- examples/15/03/main.go
- examples/15/03/main_test.go
- examples/15/03/negative/cgo/main.go
- examples/15/03/signal_check.py
- examples/15/03/verify.sh
15-04 Go CI-CD 与 GitOps
- examples/15/04/go.mod
- examples/15/04/main.go
- examples/15/04/main_test.go
- examples/15/04/.github/workflows/ci.yml
- examples/15/04/promote.py
- examples/15/04/check_workflow.py
- examples/15/04/requirements.txt
- examples/15/04/verify.sh
15-05 基础设施即代码
- examples/15/05/go.mod
- examples/15/05/main.go
- examples/15/05/main_test.go
- examples/15/05/fixtures/replace.json
- examples/15/05/fixtures/unknown.json
- examples/15/05/terraform/main.tf
- examples/15/05/chart/Chart.yaml
- examples/15/05/chart/values.yaml
- examples/15/05/chart/values.schema.json
- examples/15/05/chart/templates/deployment.yaml
- examples/15/05/kustomize/base/kustomization.yaml
- examples/15/05/kustomize/base/deployment.yaml
- examples/15/05/kustomize/overlays/prod/kustomization.yaml
- examples/15/05/kustomize/overlays/unknown-field/kustomization.yaml
- examples/15/05/kustomize/overlays/bad/kustomization.yaml
- examples/15/05/verify.sh
15-06 后端云服务
- examples/15/06/go.mod
- examples/15/06/main.go
- examples/15/06/main_test.go
- examples/15/06/workload.json
- examples/15/06/fixtures/invalid.json
- examples/15/06/iam-read-example.json
- examples/15/06/verify.sh
15-07 网关与代理
- examples/15/07/go.mod
- examples/15/07/main.go
- examples/15/07/main_test.go
- examples/15/07/nginx.conf
- examples/15/07/envoy.yaml
- examples/15/07/Caddyfile
- examples/15/07/requirements.txt
- examples/15/07/verify.sh
15-08 Go 云原生工具选型
- examples/15/08/go.mod
- examples/15/08/go.sum
- examples/15/08/main.go
- examples/15/08/main_test.go
- examples/15/08/rbac.yaml
- examples/15/08/verify.sh
16-01 系统设计方法论
16-02 系统容量估算
- examples/16/16-02/go.mod
- examples/16/16-02/main.go
- examples/16/16-02/main_test.go
- examples/16/16-02/cmd/latency/main.go