Go语言技术文章
-
接口断言成功只说明当前动态类型满足目标类型,不能证明 type switch 已覆盖全部输入。本文用 Go 示例定位遗漏 case,并补上 default 兜底和表格测试。149 收藏 -
goquery 的 Text 会递归读取选中节点及其后代文本节点,所以父元素中的标题、段落和嵌套标签文字都会被合并。本文说明它的实现语义、常见误解和可控提取方式。148 收藏 -
PATH 是多个路径组成的列表,不能用 filepath.Split 当作单一路径处理。本文对比 ListSeparator 与 Separator,说明 Go 中如何跨平台拆分 PATH,以及空输入、清理和绝对化的边界。143 收藏 -
Go 的 gzip.Reader 默认会连续读取拼接的 gzip 成员。本文用原创示例拆开 Multistream、Reset、io.ByteReader、EOF 与尾随数据的边界,帮助你选择整体解压或按成员处理。140 收藏 -
Go 的 exec.CommandContext 默认会在上下文超时后调用 Cmd.Cancel 并 Kill 子进程,但生产任务常需要更温和、可观测的退出策略。本文说明如何设计自定义 Cancel,处理 os.ErrProcessDone、WaitDelay、管道收尾和错误归因。137 收藏 -
Go 的 gzip 压缩级别是在 CPU 消耗、响应体大小和端到端延迟之间做取舍。本文用 NewWriterLevel 比较级别,并给出 HTTP Handler 中的配置、Close、Flush 与 Writer 复用注意事项。136 收藏 -
Golang · Go教程 | 2天前 | 缓存 · HTTP · go · Go net/http 静态文件 Cache-Control ETag If-Modified-Since ServeFile
用 net/http ServeFile 提供静态文件时,Last-Modified 和 If-Modified-Since 可以由文件修改时间驱动条件响应;ETag 与 Cache-Control 则需要业务方明确设置。本文从一个文件处理器拆开这些响应头的职责边界,并说明路径拼接、304 和缓存失效的常见陷阱。136 收藏 -
用 tview Pages 保留主界面并叠加 Modal,结合完整示例说明确认、取消、Esc、移除临时页和焦点恢复,对比隐藏复用与移除重建的生命周期取舍。135 收藏 -
Go 解析不带时区的日期时间文本时,time.Parse 会按 UTC 解释,time.ParseInLocation 会按传入 Location 解释。本文用对比代码说明选择方法、Zone 判断和输入边界。132 收藏 -
围绕 Go net/url 的 URL.OmitHost 字段,说明空 authority 的 String 序列化、Path 双斜杠保护、Opaque URL 区别和调用方兼容策略,给出带中文注释的最小示例。131 收藏 -
以go-billy v5.6.2的memfs为例,解释Chroot后绝对路径与子根的关系,通过同一文件的内容比较区分父视图、子视图与宿主路径,并提醒不要重复拼接Root。131 收藏 -
Go GopherLua 注册 Go 函数的关键是实现 lua.LGFunction,再用 L.NewFunction 包装并通过 SetGlobal 或 SetFuncs 暴露给 Lua。本文围绕参数读取、返回值数量、错误回传和 LState 生命周期给出最小可复用写法。131 收藏 -
解释 Go testing.T.Run 的布尔返回值、子测试失败日志与父测试汇总关系,给出保留案例名称和失败上下文的写法,并说明 t.Parallel 场景为什么不能简单依赖立即返回值。129 收藏 -
从运行时值、泛型类型参数和接口类型三个角度比较 reflect.TypeFor 与 TypeOf 空指针技巧,说明 nil interface 陷阱以及该怎样选择更直观的写法。126 收藏 -
math/big.Int.FillBytes 会把整数的绝对值写入调用方提供的字节切片;切片过短时高位会被截断。本文用 BitLen 预估容量,在固定宽度字段写入前拒绝不安全目标,并说明负数、零值和缓冲区复用边界。125 收藏