Go语言技术文章
-
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 收藏 -
Go compress/flate 的 NewWriterDict 适合压缩包含稳定重复片段的文本,但压缩端和解压端必须提前约定同一份字节字典。本文用 JSON 和模板字段示例说明 API 用法、适用条件、兼容风险与选型边界。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 收藏 -
reflect.Value.Bytes 可以读取字节切片,也可以读取可寻址的字节数组;命名切片按元素 Kind 判断,普通数组值则要先取得可寻址 Value。本文用判断表和原创示意图拆开 Bytes、SetBytes 与常见 panic 的边界。271 收藏 -
Go os.File.Truncate 把文件扩大后,新增区域读取起来像是由零字节填充。本文从文件逻辑长度、零填充读取语义和稀疏文件的物理占用三个层面解释原因,并给出适合固定长度文件的 Go 写法。271 收藏 -
用 Go 的 parser.ParseDir 按文件名筛选目录中的 .go 文件,按包名获取 AST 文件集合,并处理目录读取失败、语法错误和 build tags 不参与解析的边界。271 收藏 -
解释 Go 自定义 TLSClientConfig 时 ServerName、SNI 与证书 SAN 的关系,区分标准 Transport、自定义 TLS 拨号和证书链问题,并给出保留正常证书校验的修复写法。271 收藏 -
用 go/types.NewVar 创建名称为空的变量,再把它们按结果顺序传给 types.NewTuple,即可构造不带名称的有序结果列表。本文说明 NewTuple、Tuple、At、Len 和 Variables 的关系,以及空 Tuple 与越界访问的边界。271 收藏 -
Go trimpath 改写构建机绝对路径后,仍可保留文件名与行号。通过错误日志示例,对比两种构建,并用发布标识、源码快照和逻辑路径维持可用定位。270 收藏 -
Go HTTP 客户端可以在复用的 http.Transport 上设置 MaxResponseHeaderBytes,限制服务端响应头的最大字节数。本文说明如何用 Clone 保留默认行为、如何处理超限错误,以及为什么响应头和响应体需要分别设置边界。270 收藏 -
用 Go strings.TrimFunc 和 rune 判定函数清理字符串两端的 Unicode 字符,掌握中文、空字符串与内部字符的处理边界。270 收藏