Go教程
已收录文章:43篇
-
Golang · Go教程 | 2星期前 | HTTP · 文件下载 · Go教程 · Range请求 · ServeContent · 断点续传 Content-Range Go教程 HTTP Range ServeContent 206 Partial Content 视频拖动用 Go 的 http.ServeContent 实现支持 Range 的文件响应,覆盖 206 片段返回、416 越界、Accept-Ranges、浏览器拖动和普通 200 兜底。250 收藏
-
Golang · Go教程 | 2星期前 | csv · Go教程 · 后端架构 · 流式响应 · 大文件导出 · 大文件下载 FLUSH CSV导出 Go教程 流式写出 csv.Writer rows.NextGo 做大文件 CSV 导出时,不建议一次性把全量数据查到内存再拼成文件。更稳的方式是按批读取数据库、边读边写 csv.Writer,并通过 Flush、限流、超时和指标观察控制下载链路。251 收藏
-
Golang · Go教程 | 2星期前 | HTTP服务 · Go教程 · 后端开发 · 超时配置 · 服务稳定性 · net/http WriteTimeout HTTP超时 Go教程 ReadHeaderTimeout IdleTimeoutGo HTTP 服务不要只靠默认超时。请求头、请求体、响应写入和空闲长连接各有边界,ReadHeaderTimeout、ReadTimeout、WriteTimeout、IdleTimeout 要分开设计。140 收藏
-
Golang · Go教程 | 2星期前 | 错误处理 · Context · 并发控制 · Go教程 · 并发控制 Go教程 context取消 context.WithCancelCause context.Causecontext.WithCancelCause 适合在请求链路中保留明确取消原因,让子任务不只知道 context canceled,还能知道是权限拒绝、上游失败还是主动终止。落地时要区分系统取消和业务错误。342 收藏
-
Go slog 让标准库自带结构化日志能力,但落地时不能只把文本换成 JSON。更稳的迁移路线是先统一字段,再接入 JSONHandler,随后治理上下文、分组、脱敏和日志成本。219 收藏
-
Golang · Go教程 | 2星期前 | HTTP · Go教程 · 问题排查 · io.ReadAll · JSON绑定 · Go教程 Go HTTP请求体 io.ReadAll Request Body JSON绑定Go HTTP 请求体本质上是一个流,读取一次后游标就到末尾。中间件或日志里先用 io.ReadAll 读过 body,后面的 JSON 绑定就可能拿到空内容。排查时看读取顺序、Content-Length 和绑定错误,修复时缓存字节并用 io.NopCloser 重新赋回 r.Body。244 收藏
-
Golang · Go教程 | 2星期前 | 跨域 · cors · options · Go教程 · net/http · 跨域 Access-Control-Allow-Origin 预检请求 Options Go教程 Go CORSGo 接口被浏览器拦跨域时,不是简单加一个星号就完事。本文从浏览器 CORS 预检请求讲起,用 net/http 写一个可控的跨域中间件,说明 Origin 白名单、OPTIONS 响应、请求头放行和安全注意点。275 收藏
-
Golang · Go教程 | 2星期前 | WaitGroup · 并发编程 · Go教程 · Go 1.25 · Go并发 WaitGroup errgroup Go 1.25 sync.WaitGroup.GoGo 1.25 为 sync.WaitGroup 增加 Go 方法,适合只等待一组 goroutine 完成的场景。本文用旧写法对比新写法,说明迁移边界、错误处理选择和最小验证方式。172 收藏
-
Golang · Go教程 | 3星期前 | channel · select · Context · Go教程 · 性能排查 · select channel context default time.Ticker Go教程 CPU飙高 for selectGo 里的 select default 适合做非阻塞试探,但放进无等待的 for 循环后,代码会在没有 channel 事件时持续空转,常见表现就是 CPU 飙高、日志刷屏和退出路径混乱。459 收藏
-
Golang · Go教程 | 3星期前 | map · 基准测试 · 性能优化 · Go教程 · 内存分配 · 内存分配 Go性能优化 benchmark Go教程 map预分配 make map benchmemGo map 预分配不是玄学优化。本文用一个可复测 benchmark 说明 make(map, n) 如何减少扩容、降低 B/op 和 allocs/op,并给出适用边界。395 收藏
-
Golang · Go教程 | 3星期前 | defer · 单元测试 · testing · Go教程 · t.Cleanup · defer 单元测试 Testing 子测试 Go教程 T.Cleanup 测试资源清理Go 测试代码里的临时文件、测试库、测试服务和环境变量,最好让清理动作跟随 testing.T 生命周期。本文对比 defer 和 t.Cleanup 的适用边界,给出可落地迁移清单。418 收藏
-
Golang · Go教程 | 3星期前 | defer · Go教程 · 文件句柄 · 资源释放 · 数据库rows · defer for循环 文件句柄 资源释放 close Go教程 rows.Close本文用问答方式讲清 Go defer 放在循环里的释放时机:它不是每轮结束就执行,而是等当前函数返回;大量资源循环应拆小函数或显式关闭。421 收藏