Go语言技术文章
-
Go net.Resolver.LookupCNAME 返回跟随零个或多个 CNAME 后的最终规范主机名。本文说明如何用带超时的 Resolver 查询、区分名称变化与解析失败,并解释没有 CNAME 但有地址时为什么仍可能成功。279 收藏 -
Go database/sql.Rows 读取含 NULL 的多行结果时,不能把可空字段直接扫描到普通字符串或数字。本文用 sql.Null*、Scanner、any 和完整的 rows 生命周期示例,说明如何保留值与 Valid 状态,并处理动态列、提前退出和多结果集边界。279 收藏 -
从 HTTP 客户端接线、连接复用、超时作用范围和代理及自定义 TLS 分支定位 net.Dialer 看似不生效的原因,并提供客户端构造示例。279 收藏 -
用 Go 1.24 的 runtime.AddCleanup 管理已有 []byte 缓冲区:从 sync.Pool 复用容量,显式 Close 与 GC 兜底共享幂等释放协议,并说明引用边界、Stop、KeepAlive 和并发约束。278 收藏 -
Go container/list.InsertBefore 返回 nil,通常不是插入位置写错,而是 mark 并不属于当前 List。本文从 Element 的所属关系和标准库源码出发,说明跨链表、已移除节点、nil 返回值与安全插入写法。278 收藏 -
Go go/version.Compare 按 Go 工具链规则比较版本,本文用 beta、rc、语言版本和补丁版本说明排序关系,并给出输入校验与最低版本判断写法。278 收藏 -
Go ast.Preorder 返回可直接用 range 消费的 AST 节点迭代器。本文从 parser.ParseFile 开始,说明深度优先前序顺序、节点类型筛选、找到目标后 break,以及需要跳过子树时的 API 边界。278 收藏 -
sync.OnceValue 只返回一次计算得到的 T,不会自动告诉调用方初始化是否已经发生。当 0、空字符串或 nil 也是合法业务结果时,应把 value、ready 或 err 放进同一个返回结构中,再由 OnceValue 统一缓存。278 收藏 -
Go 1.24 引入 os.Root,可把文件读写、创建和 fs.FS 访问限制在指定目录树内。本文用 OpenRoot、相对路径、Root.FS 和错误处理说明越界路径、符号链接、关闭责任及平台边界。278 收藏 -
Go 的 encoding/json.Number 代表 JSON 数字原文,Int64 只适合能表示为 int64 的整数文本。本文区分小数、指数形式、越界和格式错误,并给出 UseNumber 与可复用解析函数。278 收藏 -
讲清 Go http.DetectContentType 的前512字节取样边界、短文件处理、application/octet-stream 回退,以及上传文件取样后如何复位游标。277 收藏 -
用 time.Ticker 做周期任务时,停止条件、空输入和任务错误应该分开处理。本文从 NewTicker、select、context 和 defer Stop 讲清一个可复用的实现边界,并补充 Go 1.23 之后的回收语义。276 收藏 -
Go os.Lstat 报错时,用 errors.Is 区分不存在、权限不足等原因,用 errors.As 提取 PathError 上下文。结合原创清单工具说明错误链包装、符号链接语义与未知错误的保留方式。275 收藏 -
用一个阻塞处理器构造 Go http.Server 优雅关闭的最小复现,再结合 ConnState、请求上下文和超时区分活动请求、空闲连接与 hijack 连接。275 收藏 -
Golang · Go问答 | 5天前 | 标准库 · 错误处理 · Go问答 · Go Base strconv.ParseInt bitSize ParseInt结果 NumError ErrRange ErrSyntax
strconv.ParseInt 本身是确定性的,结果看似不稳定通常来自 base、bitSize、输入前缀或忽略错误。本文用架构边界随笔的方式拆解参数契约、NumError、ErrSyntax 与 ErrRange,帮助把跨环境解析规则固定下来。273 收藏