Go语言技术文章
-
用 Go io.SectionReader 为同一个 ReaderAt 建立独立分片,解释 Read、ReadAt、EOF、短读和并发安全边界,给出可复用的分片任务写法与选型决策。154 收藏 -
filepath.WalkDir 不提供 Root 参数。本文说明怎样将严格根目录遍历迁移到 fs.WalkDir(root.FS()),给出有限读取、文件关闭和摘要计算示例,并解释平台及资源边界。154 收藏 -
Go HTTP/1 服务端默认会在写响应前处理未读请求体。本文用 http.ResponseController.EnableFullDuplex 说明正确调用时机、分块读写、Flush、HTTP/2 差异和 ErrNotSupported 边界。154 收藏 -
用一个只读目录工具说明 Go os.DirFS 的根目录、fs.FS 相对路径和符号链接边界,并按空目录、路径错误和越界风险给出排查方案。154 收藏 -
crypto/rand.Read 正常情况下会填满切片且不返回错误;本文解释底层失败契约,并给出使用 io.ReadFull 安全丢弃不完整缓冲区的写法。154 收藏 -
Go flag 使用独立双短横线结束包装层选项解析,通过 Args 保留子命令参数。本文给出完整示例,说明普通参数提前终止、第二个分隔符、空参数与进程接口的处理边界。153 收藏 -
math/big.Int.SetString 返回的是大整数指针和成功布尔值,不会单独返回 error。本文围绕进制参数、前缀、失败返回值和边界封装,说明为什么解析失败时会得到 nil,以及怎样安全处理。153 收藏 -
Go DirFS 只保证从指定目录开始打开文件,不会自动阻止符号链接越过根目录。本文区分 fs.ValidPath 的词法检查与真实文件边界,并给出 Go 1.24 起使用 os.OpenInRoot 和 os.Root.FS 的处理方式。153 收藏 -
Go runes.If 可按字符集合为连续片段选择不同转换器。本文用派生检索标签说明两套规则的组合写法,并解释 nil 分支、Reset、UTF-8 输入和串联转换的区别。153 收藏 -
Go 1.21 起,crypto/tls 提供 QUICServer 与 QUICConn,负责 TLS 握手这一层,不替代 QUIC 的 UDP 拥塞控制与数据包调度。本文从资产、信任边界和事件循环出发,说明服务端如何创建连接、处理握手事件与安全关闭。153 收藏 -
Go 的 map 遍历顺序由语言规范明确为未指定,不能把某次输出顺序当成稳定结果。本文解释 range 的真实保证,并给出排序键后生成确定性输出的写法。153 收藏 -
Go regexp.Compile 会在解析阶段返回无效正则的错误。本文用一个规则加载器说明如何提前编译、保留错误上下文,并区分 Compile、MustCompile 与后续匹配校验。153 收藏 -
Go ImportSpec.Path.Value 保存带引号的源码字面量,应使用 strconv.Unquote 还原路径。本文给出双引号和反引号导入示例,说明错误处理、别名分离与展示格式的边界。153 收藏 -
Go 子测试里 t.Cleanup 什么时候执行?本文用父子测试和并行子测试说明清理注册、执行顺序与资源归属,帮助你避免把 defer 和 Cleanup 的生命周期混在一起。153 收藏 -
Golang · Go问答 | 3星期前 | 标准库 · JSON · go · 故障排查 · 故障排查 Go encoding/json JSON指针 json.InvalidUnmarshalError
Go json.Unmarshal 的目标参数必须是非空指针。本文区分结构体值、nil 接口、nil 指针和指向指针变量的外层指针,并用 errors.As 识别 InvalidUnmarshalError,避免把参数错误与 JSON 语法或字段类型错误混为一谈。152 收藏