Go语言技术文章
-
使用 Go embed.FS 暴露静态资源时,先固定嵌入目录,再用 fs.Sub 把对外资源根缩小到指定子目录,最后接入 http.FileServer。本文结合路径规则、错误处理和缓存边界给出一套不容易混淆的写法。160 收藏 -
Go io.CopyN 要求复制满指定字节数。本文用完整复制、源数据不足和目标写入失败三个场景,说明如何结合 written 与 error 做准确判断。160 收藏 -
Go tview 中,后台 goroutine 不要直接修改界面 primitive。把变更放进 Application.QueueUpdate 或 QueueUpdateDraw:前者只保证串行执行,后者执行后立即重绘;事件处理器内部则直接修改并交给主循环绘制。159 收藏 -
Badger 的 Value 回调参数只适合在回调内读取,ValueCopy 则把值复制到调用方切片。本文对比两种接口的生命周期、资源释放和长事务中的选择方式。159 收藏 -
说明 Go Ristretto 中 NumCounters 与 MaxCost 的职责差异,帮助你按访问频率和成本容量分别配置缓存。159 收藏 -
解释 Go slices.Delete 后 len、cap、尾部零值和外部引用如何共同影响内存释放,并给出清零、Clip 与 Clone 的选择清单。158 收藏 -
bbolt 的 View 回调里再次调用 Update 可能长期阻塞。本文解释单写事务与读事务的生命周期关系,给出读取结果复制到事务外、再独立写入的处理方式,以及回滚、告警和复盘清单。158 收藏 -
go-toml/v2 默认会忽略目标结构体没有的配置键。本文用 Decoder.DisallowUnknownFields 拒绝未声明字段,并说明 StrictMissingError、嵌套结构体与 map 的边界。158 收藏 -
用一个可复用的泛型小工具说明 Go 如何通过类型集合限制底层类型,并区分精确类型、近似底层类型、方法约束与 comparable 的使用边界。158 收藏 -
Windows 下 filepath.Rel 遇到 C: 和 D: 这样的不同盘符时不能构造相对路径。本文解释 VolumeName 与 Rel 的边界,给出同盘计算、跨盘兜底和测试约定,避免把错误吞掉。157 收藏 -
Go database/sql 查询只取前几行时,提前 break 并不会替调用方表达完整的资源释放意图。本文从 Rows 的接口职责出发,说明为什么拿到结果集后应尽早安排 Close,并区分 Scan、Rows.Err 与 Close 的错误处理边界。157 收藏 -
Go URL.ResolveReference 的基础路径末尾斜杠会改变相对路径合并位置。通过目录前缀对照和四条表驱动用例,区分目录基址、当前页面、根路径与查询引用,避免错误拼接。157 收藏 -
用tea.Batch并发启动互不依赖的命令,将耗时操作放入Cmd闭包,并用独立消息更新模型状态。示例讲清结果无序、完成标记与后续任务依赖的处理方式。157 收藏 -
Go HTTP客户端分层超时需要区分网络环节上限、请求业务预算与客户端总超时。本文通过原创小响应示例说明配置方法、正文读取和资源关闭,并解释超时并存与常见误用。157 收藏 -
Go http.Request.Pattern 保存的是 ServeMux 实际匹配的路由模式。本文用 GET /orders/{id} 示例说明怎样读取 Pattern、怎样用 PathValue 取得变量值,以及直接调用 handler 和客户端请求导致空字符串的边界。156 收藏