Skip to content

wangxuancheng-dev/studygolang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go 学习示例(阶段 1:基础)

本仓库包含一组按主题划分的独立小示例,每个目录可单独运行/测试。建议从上到下练习,每完成一个示例后根据注释做练习题。

使用方法

  • 运行示例:go run ./basics/<目录名>
  • 运行测试/基准:go test ./basics/<目录名> -bench .
  • 已通过 go test ./... 验证。

阶段 1 示例列表(推荐练习顺序)

  • 01_hello:语法综览(变量/切片/map/方法)
  • 02_sum:表驱动测试与简单函数
  • 03_pointers:指针基础与方法接收者
  • 04_errors:错误处理(哨兵、自定义、包装、Is/As/Join)
  • 05_interface_assertion:接口、多态、类型断言、type switch
  • 06_embedding:结构体嵌入(组合替代继承)
  • 07_generics:泛型约束与通用函数
  • 08_concurrency:goroutine + channel + WaitGroup
  • 09_panic_defer:panic/recover、defer 资源释放
  • 10_mutex_atomic:Mutex vs atomic 计数器
  • 11_regex:正则匹配/捕获/替换
  • 12_fileio:文件读写、逐行读取、Stat
  • 13_http_stdlib:标准库 HTTP(路由/JSON/中间件/超时)
  • 14_sse:标准库 SSE 推送
  • 15_websocket:群聊/私聊/在线人数/踢下线示例
  • 16_json_time_context:JSON 编解码、time、HTTP context 超时
  • 17_testing_benchmark:子测试与基准测试

阶段 2(Web 进阶示例)

  • phase2/01_structured_http:拆分 main/router/handler/middleware/response,统一 JSON、请求 ID、日志、恢复
  • phase2/02_validation:请求体验证、防大包、超时控制
  • phase2/03_config:环境变量配置加载
  • phase2/04_logging:slog 结构化日志中间件
  • phase2/05_errors_handler:业务错误分类映射 HTTP 状态码
  • phase2/06_auth_basic:基础鉴权(头部 X-Auth 放用户,context 透传)
  • phase2/07_cors_rate:CORS 处理 + 每 IP 简易限流
  • phase2/08_shutdown:健康检查与优雅退出

阶段 3(Gin + MySQL/GORM + JWT + Redis + RabbitMQ + Prometheus)

  • phase3/app:可运行骨架,特性:
    • Gin 路由 + 日志/恢复 + 请求 ID 中间件
    • JWT 登录(/auth/login)与受保护路由(/api/todos)
    • 内存 Todo 示例(可替换为 DB 仓储),RabbitMQ 发布接口(/api/events/publish)
    • Prometheus /metrics,健康检查 /healthz(标记 DB/Redis/Rabbit 状态)
    • 配置通过环境变量:APP_PORTDB_DSNREDIS_ADDRREDIS_PASSRABBIT_URLJWT_SECRET

阶段 4(部署与观测示例)

  • phase4/otel_app:Gin + OTEL OTLP(可接 Jaeger/Collector)
  • phase4/rabbit_consumer:RabbitMQ 消费 demo-queue
  • phase4/kafka_producer & phase4/kafka_consumer:Kafka 生产/消费示例
  • phase4/k8s/:K8s 部署示例(app、otel-collector、jaeger)
  • .golangci.yml:基础 lint 配置;可运行 golangci-lint run ./...
  • docker-compose.yml + prometheus.yml:本地一键起 MySQL/Redis/Rabbit/Kafka/Jaeger/OTEL-Collector/Prometheus/Grafana

阶段 5(gRPC / 微服务)

  • phase5/grpc_basics:最小 gRPC 服务/客户端(Echo)
  • phase5/grpc_gateway:gRPC + gRPC-Gateway 暴露 HTTP/JSON
  • phase5/grpc_middlewares:拦截器链(日志、占位鉴权、重试示例)
  • phase5/grpc_otel:gRPC + OpenTelemetry 拦截器
  • phase5/microservice_demo:HTTP 网关(Gin)调用下游 gRPC 订单服务
  • 详细运行步骤与命令:见 docs/phase5.md

质量与安全

  • Lint:golangci-lint run ./...(需安装 golangci-lint)
  • 漏洞扫描:govulncheck ./...(需安装 govulncheck)
  • 测试:go test ./...

部署与观测

  • 本地依赖:docker-compose up -d(MySQL/Redis/Rabbit/Kafka/Jaeger/Collector/Prometheus/Grafana)
  • Prometheus 抓取:prometheus.yml 默认抓取 :8100(phase3 app)与 Collector :8888

About

golang 学习教程

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages