Go语言技术文章
-
Write 返回成功不代表数据已经到达稳定存储。本文用 Go os.File.Sync 拆开写入、同步、关闭和文件替换的边界,给出可复用的错误处理写法。463 收藏 -
Go 1.27 对声明 go 1.27 及以上的模块合并零散 require 块。本文区分布局、indirect 与依赖版本变化,说明注释保留、工具链范围和团队接纳方式,避免把正常整理误判成升级。463 收藏 -
Golang · Go教程 | 2星期前 | 接口 · 标准库 · go · Go AppendBinary encoding.BinaryAppender BinaryMarshaler 二进制编码
Go encoding.BinaryAppender 的 AppendBinary 接收已有字节切片并返回追加后的结果。本文说明如何保护已有前缀、避免保存调用方缓冲区,并让 BinaryMarshaler 与追加编码保持同一语义。463 收藏 -
本文围绕 golang.org/x/tools/go/analysis 的 Pass.Reportf,说明怎样从 AST 节点或原始文件行号取得 token.Pos,并提交带源码位置的静态分析诊断。463 收藏 -
Go sync.Pool 只适合复用可丢弃的临时对象。本文说明 Get 后如何建立初始状态、Put 前如何清理切片和引用,并用 defer 覆盖错误路径,避免旧数据带入下一次使用。463 收藏 -
Go INI 的大小写不敏感不是只放宽查询,而是会把节名和键名规范化为小写。本文解释三个开关的作用、冲突覆盖风险与稳妥配置方式。463 收藏 -
Go go-wav通过ReadInfo解析格式信息,再从Format读取采样率与声道、从SampleBitDepth读取位深。本文提供原创函数,说明错误检查、编码标识、文件关闭及格式声明与完整解码的区别。463 收藏 -
Go 反射修改字段时 CanSet 为 false,通常是值不可寻址、字段未导出或取错了 Value 层级。本文用一个小型反射检查器说明安全修复方式,并解释 unsafe 为什么不能直接把原 Value 变成可设置。463 收藏 -
Go 的 FindAllStringSubmatchIndex 返回的是按匹配分组排列的字节索引矩阵。本文用 nil、[-1,-1] 和 [k,k] 三个结果区分整体无匹配、子表达式未参与和空字符串匹配,并给出安全切片与 n 参数的排查写法。463 收藏 -
Go bufio.Scanner读取长行时需在首次Scan前配置Buffer,并独立限制业务字节数。本文结合完整示例说明空结果、Err检查、Bytes生命周期和文件关闭的处理方法。463 收藏 -
Go url.PathEscape 直接处理路径片段时会把斜杠编码为 %2F;如果观察到斜杠,通常是读取了解码后的 URL.Path,或混用了路径拼接与查询参数编码。本文用最小示例区分 PathEscape、QueryEscape、RawPath 和 EscapedPath。462 收藏 -
通过容量与新增元素数量判断 Go append 是否复用底层数组,结合切片别名、元素地址和限容示例区分长度变化、共享写入与重新分配,并说明显式复制和函数返回值的使用边界。462 收藏 -
Go filepath.IsLocal 只判断路径的词法局部性,不保证符号链接、文件存在或访问权限安全。本文说明原始输入校验、Clean 与 Join 的使用顺序及业务边界。462 收藏 -
Go bytes.SplitSeq 返回 iter.Seq[[]byte],适合按分隔符逐段消费并在满足条件后提前停止。本文说明它与 bytes.Split 的差异、空分隔符和字节片段生命周期边界。462 收藏 -
Go crypto/ecdh.PrivateKey.Equal 用于判断两个私钥对象是否代表同一把 ECDH 私钥。本文说明同一曲线、类型匹配、常量时间比较和 Bytes 编码之间的边界。462 收藏