Go教程技术文章
-
用 Go 的 len、unicode/utf8.RuneCountInString 和项目级宽度规则区分字节数、Unicode 码点数与屏幕显示宽度,避免中英文、emoji 和非法 UTF-8 造成长度判断偏差。333 收藏 -
Go 的 bufio.Scanner 默认token缓冲并不适合所有日志行。本文说明如何在首次Scan前用Buffer设置最大字节数,识别ErrTooLong,并在超出业务上限时切换bufio.Reader。333 收藏 -
Go 1.27 将 simd 与架构相关的 archsimd 作为实验性标准库能力带入发布版,但它不是所有业务代码的通用加速开关。本文从数据布局、目标架构和实验性 API 三个边界判断适用场景,并给出接入前的检查清单。332 收藏 -
Go 1.22 的 net/http.ServeMux 支持把 HTTP 方法和通配符直接写进路由模式。本文用小例子说明 PathValue、最具体匹配、冲突 panic 和 405 的判断方法。332 收藏 -
讲清 Go compress/gzip 的 Header.Name 如何写入 gzip 文件头、何时设置才生效、字符限制是什么,以及它与输出文件路径的区别。332 收藏 -
讲清 filepath.Rel 返回 .. 时的越界判断,给出跨平台的 Go helper,并说明 filepath.IsLocal 与 os.OpenInRoot 的适用边界。332 收藏 -
Go 1.27 移除了 go 命令对 bzr 的直接拉取支持。本文讲清代理与直连差异、两条迁移路线,以及干净缓存和 CI 的验收方法。331 收藏 -
Go 1.27 会整理 go.mod 中多个 require 块。本文从升级后的差异现场出发,说明 direct 与 indirect 分组的触发条件、验证方法和 CI 防复发做法。331 收藏 -
Go encoding/csv 读取带注释行的 CSV 时,设置 Reader.Comment 即可跳过行首注释;本文同时说明前导空白、TrimLeadingSpace、FieldsPerRecord 和解析错误的处理边界。331 收藏 -
解释 Go benchmark.ResetTimer 的正确调用位置,区分准备阶段、计时区间、子基准和并行基准的边界,避免 ns/op 与分配数据被错误污染。331 收藏 -
Go sync.Once 只保证初始化函数执行一次,不会因为返回错误自动重试。本文解释其完成状态语义,并给出失败可重试、成功只执行一次的互斥封装。331 收藏 -
Go 的 encoding/json 把未知 JSON 数字默认解码为 float64,转入 interface{} 后可能丢失大整数精度。本文用 UseNumber、json.Number、RawMessage 和明确字段类型分别处理动态 JSON、多态字段与业务 ID。330 收藏 -
Go archive/zip 的文件名由 Create 参数或 FileHeader.Name 决定。本文用原创示例说明如何生成稳定的相对路径,并处理目录、重复名、分隔符和中文名编码边界。330 收藏 -
Go 1.26 中实际使用的是 runtime/debug.SetCrashOutput。本文用独立文件接收未恢复 panic 与致命错误输出,说明文件描述符复制、覆盖旧目标和关闭时序的边界。328 收藏 -
Go 动态查询不知道列数时,用 Columns 创建接收槽位,以 *any 安全处理普通值与 NULL,再结合 ColumnTypes 和 rows.Err 完成通用扫描。328 收藏