Go语言技术文章
-
用 sha256.New 配合 io.Copy 流式读取大文件,计算 SHA-256 摘要并处理字节数、读取错误与自定义缓冲区。168 收藏 -
Go module graph pruning 不是简单删除 go.mod 条目。本文从 go 1.17+ 的模块图规则出发,说明如何用 go mod graph、go mod why -m 和 go list -m all 定位仍被下载的依赖。168 收藏 -
用 Go embed.FS 把静态资源编译进二进制,再通过 fs.Sub、http.FS、StripPrefix 和 FileServer 对齐嵌入根目录与 URL 前缀,解决部署漏文件和静态路径 404。167 收藏 -
Go 的 math/bits 不会自动改变变量类型,但可以测出数值需要的有效位数,帮助你在 uint8、uint16、uint32 和 uint64 之间安全选择并检查溢出边界。166 收藏 -
Go 的 iter.Pull2 把 Seq2 转成 next/stop 拉取接口。本文用一个可复用示例说明提前 break 时为什么必须调用 stop,以及 defer stop()、ok 判断和并发边界怎么处理。165 收藏 -
用 Go net/http Flusher 发送增量响应时,先判断 ResponseWriter 能力,再处理请求取消、写入错误和代理缓冲,避免把 Flush 当成端到端实时保证。165 收藏 -
讲清 Go io.SectionReader 的逻辑片段长度与底层文件实际长度的区别,结合 Size、Read、累计字节数和 io.EOF 判断短片段、空片段与完整读取。164 收藏 -
Go atomic.Value 不能把 nil 接口和 *Config 混着存。用 typed nil 指针固定具体类型,再用不可变配置快照完成安全的可选配置热更新。164 收藏 -
Go 1.27 已支持具体类型的泛型方法,但旧工具链、低版本 go.mod 和接口方法仍有边界。本文用 Box、Pair 示例说明排错与兼容写法。163 收藏 -
Go 中读取 uint64 乘法高位应使用 math/bits.Mul64,它返回完整乘积的 hi 高 64 位和 lo 低 64 位。本文说明最小写法、溢出判断、类型边界和测试对照,避免先相乘再移位导致高位丢失。163 收藏 -
Go 的 sort.Search 不是直接判断相等,而是在 [0,n) 中寻找比较函数第一次返回 true 的位置。排查结果错误时,先检查谓词是否单调,再处理 n 返回值和精确命中判断。163 收藏 -
用 Go embed.FS 把模板目录编译进二进制,启动时通过 html/template.ParseFS 解析,请求阶段用 ExecuteTemplate 执行,并说明嵌入路径、模板名称、匹配规则和发布边界。163 收藏 -
围绕 Go time.Date 处理夏令时日期的真实边界,讲清本地时间往返校验、跳时缺口、重复小时、offset 记录和 UTC 存储策略。162 收藏 -
Go fs.Sub 可以把指定目录映射为新的 fs.FS 资源根,让调用方使用简短相对路径;本文说明 ValidPath、SubFS 转发、错误路径以及它与目录安全隔离的边界。161 收藏 -
本文用固定长度文件记录和分片场景说明 Go os.File.ReadAt 的偏移参数、短读与 EOF 处理,并给出字节转换和 SectionReader 的使用边界。161 收藏