Go语言技术文章
-
Go slog通过Group组织单条记录的局部字段,通过WithGroup派生模块Logger。结合导入任务示例说明公共根字段、绑定顺序、嵌套路径和查询取舍。138 收藏 -
Go Base64 标准编码与 URL 编码的区别在字符表,Raw 决定是否省略填充。本文对照四个编码对象,说明 URL 参数转义、存储约定、解码错误及规范文本处理边界。138 收藏 -
用 Go debug/elf.File.DWARF 从 ELF 文件取得 DWARF 数据,说明打开与关闭边界、调试信息缺失的处理,以及如何按条目读取编译单元和函数名。138 收藏 -
Go slog.Level.String 会把 DEBUG、INFO、WARN、ERROR 以及它们之间的数值级别转换成可读文本。本文说明自定义偏移、JSON 与文本配置复用规则,以及外部输入和审计记录的边界。138 收藏 -
Go fuzz 测试发现失败输入后,会把最小化样本保存到 testdata/fuzz 目录。本文说明如何定位 corpus 文件、用 go test 自动复放,以及用 -run 精确复现单条输入。138 收藏 -
Cobra 可以通过 Command.Args 在 RunE 执行前校验位置参数数量。本文用 RangeArgs 讲清闭区间约束,并对比最小、最大、固定数量校验器与 MatchAll 组合方式。138 收藏 -
Decimal.Equal 按数值比较,结构体 == 则比较 Decimal 的字段表示和其它字段。本文结合 *big.Int 指针、指数、零值与业务对象,说明如何排查相同金额比较失败,并给出 Equal、Cmp 和结构体比较的选择边界。138 收藏 -
Go encoding/json 默认解码会让 JSON 缺失字段、null 和零值在部分类型上落到相同结果。本文用指针、json.RawMessage 和自定义包装类型,逐步保留字段存在性、null 状态与有效零值。138 收藏 -
Go 使用 defer 和 recover 隔离一次 panic 时,还应在恢复现场调用 runtime/debug.Stack 保存调用堆栈。本文给出统一错误返回、日志上下文和 goroutine 边界的写法。138 收藏 -
使用 filepath.Rel 生成归档文件名时,应先确定 basePath 和 targPath,再处理返回错误与 ../ 结果,最后用 filepath.ToSlash 统一条目分隔符。本文给出可复用的小函数和跨平台边界。138 收藏 -
Go io.CopyN 复制固定长度时,应同时比较 written 与 n,并用 errors.Is 区分源数据提前结束和其他 I/O 错误。本文给出返回契约、可复用判断函数及固定长度协议的处理边界。138 收藏 -
用 fs.Sub 与 fs.WalkDir 保留相对目录路径,给出 ListRelative 完整示例,区分空输入、空目录、不存在的根与中途访问错误,并保留可识别的错误链。138 收藏 -
Go reflect.Value.Set 报错通常不是 Set 本身随机失败,而是目标 Value 不可设置、只拿到了值副本、字段未导出或类型不匹配。本文按 CanSet、指针解引用、字段导出和类型检查拆开定位,并给出返回 error 的安全封装。138 收藏 -
本文围绕 Go strings.Cut 解析一次分隔符的场景,说明 before、after、found 三个返回值如何区分缺失分隔符、空值和带分隔符的值,并给出可复用的键值解析实现。138 收藏 -
Go net/http 中 nil Body 表示没有 Body 对象,http.NoBody 则是一个读取立即返回 EOF、关闭返回 nil 的零字节 ReadCloser。本文区分客户端与服务端 Request.Body 约定,并给出测试和排查清单。138 收藏