Go语言技术文章
-
filepath.WalkDir 会访问符号链接这一项,但不会自动进入它指向的目录。本文用 DirEntry、os.Stat 和错误回调拆开链接本身、目标信息、失效链接与权限错误的处理边界。132 收藏 -
strings.ToValidUTF8 能把非法 UTF-8 清洗成合法字符串,但替换长度可能改变后续字节偏移。本文用 DecodeRuneInString 记录原始错误区间,并给出偏移敏感场景的等长替换方案。132 收藏 -
Go 泛型函数不能把 nil 直接返回为任意 T。本文区分类型参数零值与具体可空类型,给出 zero、nilPtr、nilSlice 的写法,并解释无普通实参时为何要显式补全类型参数。132 收藏 -
用 Go httptest.NewServer 构造一个可控的本地 HTTP 服务,把真实上游替换成固定 Handler,再围绕请求路径、请求头、状态码和响应体组织稳定测试。132 收藏 -
通过 httptest.NewServer 与自定义 RoundTripper 组合,记录测试客户端请求,并稳定覆盖固定 500 响应和传输错误分支。132 收藏 -
用 Go os/signal 接收 SIGINT 和 SIGTERM,将信号接入服务生命周期,说明缓冲 channel、NotifyContext、Stop 以及重复信号和平台边界。132 收藏 -
Go compress/gzip 写入后不调用 Close,可能导致缓冲数据和 GZIP footer 没有完整写出。本文用最小示例说明 Write、Close、底层资源关闭和读取到 EOF 的排查顺序。132 收藏 -
掌握 Go sync.OnceValue 的一次初始化、并发调用与结果复用方式,了解 OnceValues、panic、可变指针和重置边界。132 收藏 -
Go 解析不带时区的日期时间文本时,time.Parse 会按 UTC 解释,time.ParseInLocation 会按传入 Location 解释。本文用对比代码说明选择方法、Zone 判断和输入边界。132 收藏 -
Go 1.27 为 go/scanner.Scanner 增加 End 方法,返回最近一次扫描 token 之后的位置。本文从诊断范围偏移的排查现场出发,说明 Scan 返回的起点、End 的末端、token.File.Offset 的字节区间如何配合,以及 EOF、Unicode 和未扫描状态下的边界。131 收藏 -
使用 Go archive/zip 的 FileHeader.Modified 和 Writer.CreateHeader 设置 ZIP 条目的修改时间,并处理 UTC 转换与传统 ZIP 时间精度差异。131 收藏 -
读多写少不等于一定该用 sync.RWMutex。本文从读临界区、写者等待、锁升级限制和实际基准四个角度,说明如何在 Mutex 与 RWMutex 之间做出可验证的选择。131 收藏 -
maps.Clone 会创建新的 map 容器,但键和值只按普通赋值复制;值中若含切片、指针或 map,副本仍可能共享底层数据。本文用配置快照案例讲清判断方法、定制复制与测试门禁。131 收藏 -
围绕 Go net/url 的 URL.OmitHost 字段,说明空 authority 的 String 序列化、Path 双斜杠保护、Opaque URL 区别和调用方兼容策略,给出带中文注释的最小示例。131 收藏 -
读取日志头、文件摘要或上传内容前 N 个字节时,io.LimitReader、io.CopyN 和手动缓冲的行为并不一样。本文按目标是限制读取、严格读取还是复用缓冲,给出选择边界、EOF 判断和可验证示例。130 收藏