Go语言技术文章
-
使用 slices.Delete 删除切片区间时,关键是接收返回值、理解原地搬移和尾部清零,并根据元素是否含指针处理底层引用与批量删除边界。171 收藏 -
解释 Go database/sql 中 Rows.Next 返回 false 的双重语义,给出 Next、Scan、Err、Close 的正确组合,并说明如何避免迭代失败时静默返回半截数据。171 收藏 -
Go 的 database/sql 连接池不是把连接数调得越大越好。本文用一段可落地的初始化代码说明 MaxOpenConns、MaxIdleConns、MaxConnMaxIdleTime、MaxConnMaxLifetime 与 DBStats 的关系,并给出等待指标和上下文超时的排查方法。171 收藏 -
Go 的 iter.Seq 没有 error 返回位,遍历过程中的错误应通过结果对象携带;初始化失败则直接作为外层 error 返回,pull 迭代器提前结束还要调用 stop。171 收藏 -
Go 的 Example 函数如何放进 _test.go、如何用命名约定关联文档对象,以及 Output 和 Unordered output 注释何时会让示例参与测试。170 收藏 -
Go ResponseWriter 的普通 Header 要在 WriteHeader 或 Write 之前设置;一旦响应头提交,后续修改通常不会生效。本文说明提交时点、分支写法和 Trailer 边界。170 收藏 -
讲清 Go database/sql QueryRow 没有记录时为什么要在 Scan 处理 sql.ErrNoRows,并将空结果、上下文取消和数据库故障分层转换为稳定的业务语义。170 收藏 -
Go 的 url.URL 同时设置 Path 和 Opaque 时,String 会根据 URL 形态选择层级路径或 scheme:opaque 表示,两个字段不会简单拼接。本文用最小结构对比、查询参数边界和回归清单说明正确构造方式。170 收藏 -
Go 1.27 的 encoding/json/v2 遇到同一字段既可能是 42 又可能是字符串 42 时,可用局部自定义类型兼容两种表示,并严格拒绝小数、空白和越界值。170 收藏 -
pkg.go.dev API 可以直接返回 Go 模块的最新带标签版本。本文用 module、versions 两个接口和 Go 客户端示例,说明如何读取 version、isLatest,如何区分指定版本、main/master 分支和版本列表。170 收藏 -
Golang · Go教程 | 4天前 | go · 时区 · 时间处理 · 本地时间 time.LoadLocation 时区解析 Go time.ParseInLocation Asia/Shanghai
本文解释 Go 的 time.ParseInLocation 如何把不带时区的本地墙上时间按指定 Location 解析,比较 time.Parse 与 Time.In,并说明 IANA 时区加载、RFC3339、夏令时边界和 UTC 存储做法。170 收藏 -
Go encoding/gob 不会传输 nil 指针,但当流中存在指针字段时,Decoder 会为 nil 目标字段分配对象。本文用 Envelope 示例拆开这层语义,并给出 HasMeta 加值字段的传输结构,避免把隐式分配误当成业务状态。169 收藏 -
Go 的 encoding/csv 默认会根据首条记录约束列数。面对供应商字段增减、尾列缺失的文件,可设置 FieldsPerRecord=-1 放开列数检查,再结合 record 长度、ErrFieldCount 和行号完成可追踪的容错处理。169 收藏 -
Go 的 embed 在编译期读取资源;交叉编译不会自动改写同一文件,平台差异应通过构建约束选择不同源文件。168 收藏 -
用 sha256.New 配合 io.Copy 流式读取大文件,计算 SHA-256 摘要并处理字节数、读取错误与自定义缓冲区。168 收藏