Go语言技术文章
-
Golang · Go教程 | 6天前 | Go教程 · 模块管理 · Go 离线构建 go.work go mod vendor vendor/modules.txt go work vendor Go工作区
Go work vendor 适合为 go.work 定义的多模块工作区生成共享 vendor 依赖目录。本文说明工作区边界确认、vendor 生成、离线构建入口以及 go.work、go.mod 与 vendor/modules.txt 的一致性排查,并区分 go work vendor 与 go mod vendor 的适用场景。374 收藏 -
Go 的 CertPool.Subjects 返回证书池中证书主题的 DER 编码,不是完整证书,也不等于系统根证书总数。本文用分层检查方法解释如何读取、解析和判断这些内容,并说明 SystemCertPool 的特殊边界。374 收藏 -
Go os.File.ReadAt 的 off 是文件字节偏移,负数不是可读取的位置。本文从错误现象、偏移计算、参数校验和 *os.PathError 判断四层排查,给出安全的 ReadAt 封装,并区分它与 Read、Seek 的位置语义。374 收藏 -
比较 Go 文件错误直接返回、文本转换、%w 包装与 errors.Join,给出保留写入和关闭错误的示例,并说明 errors.Is、errors.As 及资源清理的使用边界。373 收藏 -
time.Time.Year 返回公历年,而 ISOWeek 返回 ISO 8601 的周所属年与周号。本文用年初年末边界说明两者为何不同,并给出正确的周统计键和回归测试写法。373 收藏 -
Go bytes.Buffer 读取后 Len 会变小,但 Reset 仍能让同一个对象继续写入。本文拆开读取位置、未读切片、底层存储和复用边界,帮助你避免把 Bytes 返回值保存过久。372 收藏 -
使用 bytes.Buffer 时,Grow(n) 不是越大越好。本文按固定大小、近似大小和未知大小三种输入场景,说明如何估算 n,区分 len 与 cap,并给出避免频繁扩容和过度预分配的实用流程。372 收藏 -
bits.Mul64 的完整乘积等于 hi×2^64+lo,需要两个 uint64 或16字节保存。用固定大端编码和解码示例解释高低字布局,并用 hi!=0 判断结果能否装入 uint64。372 收藏 -
Go 的 image.Decode 读取 GIF 时只返回第一帧,这是通用图片接口的明确语义。本文说明 image.Decode 与 gif.DecodeAll 的选择、GIF.Image/Delay/LoopCount 的对应关系,以及处理不可信 GIF 时如何先检查尺寸再从头解码。372 收藏 -
用 Go bufio.Reader.Peek 判断固定字节边界,区分完整输入、提前 EOF、ErrBufferFull 和底层读取错误,并给出安全消费与审计清单。371 收藏 -
Go debug/dwarf 的 LineReader 可以用 Tell 保存当前行表位置,再用同一个 LineReader 调用 Seek 恢复。本文用一个紧凑示例说明保存时机、继续读取方式,以及 LineReaderPos 不能跨行表复用的边界。371 收藏 -
Go hash/crc32.MakeTable 可以把自定义 CRC 多项式转换成可复用的校验表。本文用 CRC32-Q 说明如何一次创建、重复计算,并区分多项式表示、哈希状态与安全摘要边界。371 收藏 -
Go GC 延迟抖动需要把分配速率、辅助标记 CPU、暂停与调度等待放在同一窗口比较。本文给出支持列表采集示例,说明累计直方图差分、缺失指标和升级对照的判断边界。370 收藏 -
Go io/fs.Sub 创建子文件系统后,../ 父级路径为什么会失败?本文从 fs.ValidPath 和路径映射解释原因,并给出同时访问子目录与根级资源时保留原始 FS 的设计方式。369 收藏 -
Go 1.23 的 maps.All 会把 map 转成 iter.Seq2,让 range 同时接收键和值。本文用对比场景说明最小写法、提前终止、无序语义、自定义 map 类型和选型边界。368 收藏