Go教程技术文章
-
通过实现 json.Marshaler,让 Go 枚举在 JSON 中输出可读文本,并对未知整数返回明确错误。367 收藏 -
Go 的 http.Flusher 只能把服务端已缓冲的数据交给网络层,不能保证代理和客户端立刻呈现。本文用最小 SSE 示例说明如何检测 Flusher、正确 Flush,并排查包装器与代理缓冲。468 收藏 -
Go 的 HTTP Trailer 不在 Response.Header 中,客户端要先把 Body 读到 io.EOF,再从 Response.Trailer 读取响应体末尾的字段;服务端则要在写响应前声明 Trailer。234 收藏 -
Go archive/tar 不会替你决定是否跟随符号链接。本文用 Lstat、WalkDir 和 tar.Header 演示如何原样归档链接,并在解包前校验目标路径。475 收藏 -
Go image/draw 裁固定比例缩略图的关键,是先按目标比例计算源图裁切矩形,再用 draw.Draw 对齐源点复制到固定画布,而不是直接拉伸原图。本文给出中心裁切、尺寸限制和异常排查方法。115 收藏 -
Go image.Decode 会根据已注册解码器的文件头特征识别图片格式并返回 format。本文说明空白导入、Reader 位置、DecodeConfig 和上传输入的资源限制。399 收藏 -
Go 嵌入资源读取失败时,不要先手写 ReadFileFS。本文按接口分派、embed.FS 路径、fs.ValidPath、PathError 和自定义实现契约逐层排查。252 收藏 -
os.File.Sync 适合放在关键文件写入、检查点和原子替换的持久化边界上。本文区分 Write、Sync、Close 与目录项同步,给出错误处理和同步频率的实用判断。203 收藏 -
用 Go os/exec 分别读取 stdout 与 stderr,掌握 Start、并发消费管道和 Wait 的正确边界,避免输出混合、管道阻塞和误判退出状态。426 收藏 -
Go 的 runtime.KeepAlive 不是强制 GC,也不是替代 Close;它用于把对象的最后安全使用点明确到低层调用返回之后,避免终结器过早关闭底层句柄。本文用文件描述符和 cgo 资源说明放置位置、职责边界与生产检查项。393 收藏 -
Go runtime.GC 只能推动一次垃圾回收,不能保证进程 RSS 立刻下降。本文区分对象可达性、运行时堆页和操作系统内存,给出 MemStats、pprof、FreeOSMemory 与 GOMEMLIMIT 的使用边界。187 收藏 -
Go 服务里记录 panic,关键是把 recover 放进 defer 函数,并用 runtime/debug.Stack 保存当前 goroutine 的调用堆栈,再补上请求标识和恢复边界。183 收藏 -
Go 的 errors.As 会沿着错误包装链查找匹配类型。本文用自定义错误说明 %w、目标变量和指针层级的正确写法,并给出迁移与回归检查清单。487 收藏 -
errors.Join 会丢弃 nil 参数;只有所有输入都是 nil 时才返回 nil。本文用批量校验示例说明如何判断聚合结果,并用 errors.Is 识别具体错误。364 收藏 -
用 Go 的 sync/atomic.Value 保存同一具体类型的只读配置快照,写入方复制后整体替换,读者通过 Load 无锁读取,并避开共享 map、类型漂移和并发写入等常见坑。435 收藏