Go教程技术文章
-
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 maps.Clone 复制 map,隔离顶层写入,并通过值类型判断 slice、指针等嵌套数据是否还需要额外复制。163 收藏 -
使用 Go filepath.WalkDir 扫描目录时,先处理回调错误并记录 path,再用 SkipDir 控制目录过滤;本文还说明 DirEntry、符号链接和根路径失败的边界。162 收藏 -
围绕 Go time.Date 处理夏令时日期的真实边界,讲清本地时间往返校验、跳时缺口、重复小时、offset 记录和 UTC 存储策略。162 收藏 -
Go 的 runtime.SetFinalizer 可以在对象不再可达时安排回调,但它不是文件、连接或临时目录的确定性关闭机制。本文用 runtime.KeepAlive、SetFinalizer 和显式 Close 对比验证可达性、回收时机与资源释放边界。161 收藏 -
Go 定时刷新配置时不要在每次配置变化里 NewTicker;让一个控制协程拥有 ticker,周期变化调用 Reset,退出时统一 Stop。161 收藏 -
Go fs.Sub 可以把指定目录映射为新的 fs.FS 资源根,让调用方使用简短相对路径;本文说明 ValidPath、SubFS 转发、错误路径以及它与目录安全隔离的边界。161 收藏 -
本文用固定长度文件记录和分片场景说明 Go os.File.ReadAt 的偏移参数、短读与 EOF 处理,并给出字节转换和 SectionReader 的使用边界。161 收藏 -
Go 的 os.File.ReadAt 按固定偏移读取文件,不移动共享游标,但它对短读更严格:只要返回字节数少于缓冲区长度,就一定带非空错误。本文用可运行示例拆开 n、err、EOF 与循环读取的边界。160 收藏 -
用 Go net/url 的 URL.JoinPath 拼接接口路径,厘清多斜杠、./、../ 与 PathEscape 的边界,并通过可运行示例验收最终请求地址。160 收藏 -
面对超大 JSON 数组,不要先读成 []byte 再 Unmarshal;用 json.Decoder 从 io.Reader 逐项 Decode,并为输入总量和单个元素设置清晰边界。160 收藏 -
Go 1.27 为 go fix 增加 atomictypes、embedlit、slicesbackward、unsafefuncs 四个 modernizer。本文用一套可回滚的检查流程说明如何先看改动,再决定是否接受自动改写。159 收藏 -
用 math/rand/v2 写随机测试时,把 PCG 的两组 seed 作为测试输入保存,并为每个并发用例创建独立随机源;失败时输出 seed,下一次就能重放同一组随机序列。159 收藏