Go语言技术文章
-
Go 1.25 起可以用 os.Root.Chtimes 在受限目录树内更新文件的访问时间和修改时间。本文说明两个时间参数、零值保留、精度、权限与平台边界。276 收藏 -
Go archive/zip 找不到中文文件名,通常不是文件内容问题,而是 ZIP 目录项的名称编码标记、实际名称或斜杠路径不一致。本文说明如何判断 NonUTF8、正确创建 UTF-8 文件名,以及外部编码压缩包的处理边界。276 收藏 -
Windows1252 与 ISO8859_1 都是单字节编码,但 0x80–0x9F 区域的字符定义不同。本文用 Go x/text/encoding/charmap 对比解码、流式转换和反向编码,说明为什么不能只看字节宽度来选择编码。276 收藏 -
用 time.Ticker 做周期任务时,停止条件、空输入和任务错误应该分开处理。本文从 NewTicker、select、context 和 defer Stop 讲清一个可复用的实现边界,并补充 Go 1.23 之后的回收语义。276 收藏 -
Golang · Go教程 | 1天前 | 标准库 · 单元测试 · TLS · Go教程 · Go Go标准库 HTTP测试 NewServer testing/httptest NewTLSServer TLS测试
testing/httptest 的 NewServer 适合普通 HTTP 回环测试,NewTLSServer 用于确实需要 HTTPS、证书信任或 TLS 配置的场景。本文用同一 Handler 对比两者的请求写法、客户端选择、配置时机和资源清理边界。276 收藏 -
Go 模块解析遇到某个已知不能加载的版本时,可以在主模块 go.mod 中用 exclude 精确排除 module@version,再观察解析器是否选择更高可用版本。本文同时说明它与 replace 的边界,以及为什么不会改写下游模块。275 收藏 -
Go 中给 net.Resolver 设置 Dial 后仍访问默认 DNS,通常不是地址写错,而是当前平台没有选择 Go 内置解析器。本文解释 Resolver.Dial 与 PreferGo 的组合边界,并给出接入 HTTP Transport、处理平台差异和保留回退路径的写法。275 收藏 -
Go 时区缩写解析成功不代表偏移正确。本文解释 Parse 的本地时区依赖与未知缩写回退,给出显式地区解析旧输入、RFC3339 数字偏移交换新数据的写法及边界。275 收藏 -
Go 项目同时存在 vendor 和 module cache 时,构建到底读取哪份依赖?本文用 go env、go list 和 -mod 参数定位选择模式,解释 GOFLAGS、go.mod 版本与 vendor/modules.txt 的关系。275 收藏 -
Go context.WithoutCancel 可以保留父 context 中的请求级值,同时切断取消信号。本文用收尾任务示例说明它的语义、独立超时写法、适用边界和常见误区。275 收藏 -
Go sync/atomic 的 atomic.Pointer 可以原子地发布配置指针,但不会替调用方完成对象字段初始化。本文从半初始化现象出发,定位提前 Store、发布后继续修改以及嵌套引用复用造成的问题,并给出不可变配置快照的修复写法。275 收藏 -
Go hash/maphash 的 Seed 决定 Hash 使用的哈希函数。本文说明怎样用 SetSeed 让多个 Hash 实例使用同一个进程内 Seed,如何用于并发计算,以及调用时会清空已有输入的边界。275 收藏 -
说明 go/types.Info.Implicits 的三类 AST 键值契约,展示 ImportSpec、CaseClause 和匿名参数 Field 的读取方式,并排查未填充映射、查询节点错误与 nil 对象边界。275 收藏 -
Go strconv.FormatBool 可以把 bool 稳定转换成 true 或 false 文本。本文从最小写法出发,说明它与 fmt 通用格式化、ParseBool 和 JSON 序列化的边界,帮助你在日志、键值字段和文本接口中选对转换方式。275 收藏 -
Go sync/atomic.AndUint64 可以用一个按位 AND 原子更新 uint64 状态字。清除指定状态位时要传入反掩码,函数返回清除前的旧值;本文还说明 64 位对齐与 atomic.Uint64.And 的选择边界。275 收藏