Go教程技术文章
-
使用 go-runewidth Condition.Wrap 按终端显示列数折行,说明字节数与 rune 数的区别、逐行测宽、控制字符输入约束及 ANSI 和复杂字符边界。273 收藏 -
Go testing.B.ReportMetric 可以在标准基准结果之外增加自定义吞吐指标。本文从单位名、b.N 除数和 b.Elapsed 时间基准入手,说明 /op、/ns、重复覆盖、内置指标覆盖与 ResetTimer 的使用边界。273 收藏 -
Go crypto/subtle.ConstantTimeCopy 用 0/1 控制是否覆盖等长字节缓冲区。本文说明参数语义、固定长度准备、边界条件,以及它与 copy、ConstantTimeCompare 的区别。273 收藏 -
用 goquery.Attr 的第二个返回值区分 HTML 属性缺失和属性值为空,再把判断封装进一个可复用的 Go 解析小工具。272 收藏 -
Go sort.Find 可以同时返回有序切片中的命中下标和未命中时的插入位置。本文说明 cmp(i) 的方向、found 的判断、重复值边界与安全插入写法。272 收藏 -
Go log/slog 可以在 Handler 层设置最低日志级别:用 HandlerOptions.Level 固定过滤边界,用 LevelVar 在排障窗口动态调级,再用 Logger.Enabled 避免低级别日志触发昂贵字段计算。本文围绕生产配置、审计边界和发布前复查给出可复用写法。272 收藏 -
bytes.Buffer.Bytes 返回未读数据的共享切片,并非独立快照。本文解释修改、Reset 后复用与异步交付的风险,给出复制再复用的示例,并区分同步借用、长期保存和并发访问的处理方式。272 收藏 -
Go http.NewRequestWithContext 把 context 绑定到出站 HTTP 请求,取消信号会覆盖连接、发送、响应头和响应体读取。本文说明 WithTimeout、错误处理、响应体关闭与测试请求的边界。272 收藏 -
Cobra通过父命令的PersistentFlags向后代共享选项。本文用完整Go示例比较根选项、命令组选项和局部选项,说明目标命令读取、同名遮蔽及TraverseChildren的适用范围。272 收藏 -
Go 的 os.ReadFile 会把完整文件返回为 []byte。本文从内存边界出发,说明什么时候继续使用它,什么时候改用 os.Open、io.Copy、io.LimitReader 或有界逐行读取。272 收藏 -
Go 基准测试中的 b.Cleanup 会在基准函数和子基准完成、计时停止后执行,清理回调本身不会计入 ns/op,但回调登记动作若放进循环仍会计时。本文对比 b.Loop、b.N、defer 与手动 Close 的资源边界。272 收藏 -
用 context.WithTimeoutCause 保存超时原因,用 context.Cause 区分截止时间、主动取消和上游取消。271 收藏 -
Go 1.27 的 encoding/json/jsontext 提供面向 JSON 语法的 Decoder 和 Token。本文从最小读取示例、对象数组边界、跳过值和 Token 生命周期四个方面说明怎样按 token 处理 JSON。271 收藏 -
Go 的 os.File.Readdirnames 适合把目录名称按固定批量读取。本文说明目录游标如何推进、怎样处理部分结果与 io.EOF,以及为什么它不会递归或排序。271 收藏 -
Go os.File.Truncate 把文件扩大后,新增区域读取起来像是由零字节填充。本文从文件逻辑长度、零填充读取语义和稀疏文件的物理占用三个层面解释原因,并给出适合固定长度文件的 Go 写法。271 收藏