Go教程技术文章
-
Go math/big.Int 的 Append 方法会把整数按指定进制的文本表示追加到已有 []byte 缓冲区。本文说明缓冲区复用、进制与前缀、负数和 nil 边界,并对比 Bytes 与 FillBytes 的二进制语义。296 收藏 -
Go log/slog 可以用 GroupAttrs 把动态收集的 slog.Attr 放进命名属性组。本文从字段资产、属性收集、空组名、WithGroup 和 ReplaceAttr 的边界入手,说明怎样让日志结构清晰,同时避免把分组误当成脱敏措施。180 收藏 -
通过AddSource与ReplaceAttr控制Go slog日志的源码信息,展示短文件名与删除source的写法,说明Handler绑定、封装调用点和定位成本之间的取舍。454 收藏 -
Go hash/maphash 适合为当前进程内的字符串或字节键计算 uint64 哈希。本文从 Seed 的归属、String 与 Bytes 的选择、复合键规范化和并发边界入手,说明哪些结果可以用于分桶和索引,哪些用途不应依赖。330 收藏 -
用 http.NewServeMux 创建独立路由表,注册固定路径和 Go 1.22+ 方法模式,再把 mux 显式交给 http.Server,避免测试或多服务场景误用全局 DefaultServeMux。175 收藏 -
Go archive/tar 当前没有公开的 Reader.WriteTo 方法。本文解释源码内部 writeTo 与 Reader.Read 的差异,说明稀疏文件空洞为何会表现为 NUL 字节,并给出普通解包与额外恢复层的边界判断。317 收藏 -
Cmd.Environ 返回命令按当前配置运行时使用的环境副本。本文用一个小型命令行示例说明 Dir、Env、PWD、重复键和执行结果之间的关系。176 收藏 -
filepath.Localize 用于把 io/fs 约定的 slash 分隔路径转换为当前操作系统路径。本文通过 Go 示例说明输入契约、错误边界,以及它和 FromSlash、ToSlash 的区别。159 收藏 -
Go filepath.IsLocal 适合在拼接用户路径前筛出绝对路径、空路径和父目录路径。本文用原创 Go 示例说明它与 filepath.Clean、filepath.Join 的边界,并解释符号链接、存在性和权限问题为什么仍需额外处理。245 收藏 -
用os.OpenRoot和Root.OpenFile在指定目录树内创建新文件,区分Create截断与O_EXCL防覆盖,并说明写入关闭错误、父目录和平台边界。422 收藏 -
bytes.Buffer.Available 返回的是底层缓冲区尚未使用的容量,不是当前可读字节数。本文用固定状态表和最小示例区分 Len、Cap、Available、Bytes,并说明读取与 Reset 后的判断方式。194 收藏 -
在 os.OpenRoot 建立的受限目录内使用 Root.Lstat,判断路径本身是否为符号链接,并与 Root.Stat 的跟随语义做清晰区分。198 收藏 -
用 os.Root 把文件操作限制在指定目录内,再通过 Root.Link 的两个相对路径参数创建同一文件的硬链接,并梳理符号链接源文件、路径越界和 GOOS=js 的边界。229 收藏 -
用 runtime/pprof.Labels 和 pprof.Do 给 goroutine 建立低基数标签作用域,区分 WithLabels、SetGoroutineLabels 与 profile 观察边界,并说明 CPU 与 goroutine profile 的适用范围。306 收藏 -
go tool pprof 的 -http 参数可以显式指定 Web 界面的 host:port。本文用实际调试场景区分 profile 数据源与界面监听地址,并说明 127.0.0.1、0.0.0.0、固定端口和随机端口的取舍。471 收藏