Go问答技术文章
-
Go 的 os.File.ReadAt 不应只看 err。本文用固定长度读取场景拆解 n 与 err 的组合,说明完整读取、短读、负偏移和并发读取时该怎样判断与验证。491 收藏 -
time.Time.AppendText 从 Go 1.24 起提供面向 encoding.TextAppender 的 RFC 3339 文本输出。它适合把时间追加到已有字节缓冲区,但要处理错误返回,并注意它保存的是时区偏移而不是 Location 名称。489 收藏 -
用 Go atomic.Pointer 替换进程内共享配置时,关键不是把指针换掉,而是保证读线程拿到完整快照、发布顺序清楚且失败时能回到旧版本。本文用一份可运行的配置结构说明初始化、原子发布、校验和回滚边界。488 收藏 -
Go 1.24 为 net/http 增加 HTTP2Config 与 Protocols 配置。本文从服务端并发流限制和客户端兼容验证入手,说明 HTTP2Config 适合解决什么问题、哪些字段只对服务端生效,以及如何用最小代码确认协议协商结果。488 收藏 -
Golang · Go问答 | 22小时前 | 正则表达式 · 调试 · regexp · Go问答 · 文本处理 · Go regexp 捕获组 FindAllStringSubmatchIndex 字节位置
FindAllStringSubmatchIndex 返回的是原字符串的字节区间,不是字符下标。本文用一个日志标注小工具拆开整段匹配、捕获组、未匹配分组和 UTF-8 边界,给出可运行的映射方法。487 收藏 -
Go 1.21 引入的 clear 可以一次删除 map 的全部元素,但它不负责并发保护,也不等于立刻把底层内存还给操作系统。本文用可运行基准拆开清空速度、复用场景和重建 map 的边界。487 收藏 -
context.AfterFunc 的 stop 返回 false,不等于回调丢失;它表示回调可能已经启动,或此前已经停止。本文用连接读超时和资源清理场景拆解停止竞态、完成同步与幂等写法。486 收藏 -
encoding/base64 的 AppendEncode 会把编码结果追加到已有切片,适合复用缓冲区。本文通过可运行示例说明输出容量、尾部数据和 RawStdEncoding 的边界。486 收藏 -
os.ReadDir 和 File.ReadDir 都能遍历目录,但排序规则并不相同。本文用最小示例说明文件名排序、directory order、n 参数和分页读取的边界,避免把稳定输出误当成底层目录顺序。486 收藏 -
Go 的 url.URL.JoinPath 会合并路径、清理 ./ 和 ../,并把连续斜杠压成一个。它适合拼接已经转义的路径片段,但不能替代路径段转义;本文用源码规则解释斜杠变化和路由边界。486 收藏 -
用 Go 标准库 log/slog 的 Handler.WithGroup 组织请求、用户和数据库字段,比较文本与 JSON 输出,并验证自定义 Handler 的实现边界。485 收藏 -
Golang · Go问答 | 2天前 | golang · 泛型 · 性能 · unique · Go 1.23 · 内存管理 值规范化 unique.Handle Go unique.Make 字符串缓存
Go 1.23 的 unique.Make 可以把可比较值规范化为可廉价比较的 Handle,但它不是无条件的字符串驻留池。本文从标签解析缓存场景出发,拆开 Make、Handle、Value 和垃圾回收之间的关系,说明何时值得用、如何保留句柄,以及为什么不能只存 Value。483 收藏 -
strings.Builder 适合高效拼接字符串,但写入后复制会触发运行时检查。本文从零值使用、复制边界和返回字符串的别名风险说明正确写法。483 收藏 -
用 Go filepath.IsLocal 先拦截绝对路径和 .. 路径,再配合 Join 与符号链接复核,建立文件下载场景的安全边界。479 收藏 -
解释 Go net.IP.Equal 如何处理 4 字节 IPv4 与 IPv4-mapped IPv6,结合 To4 和 16 字节表示说明比较、规范化与边界判断。477 收藏