Go问答技术文章
-
解释 Go generate 环境变量替换与参数边界的关系,说明带空格值、多个独立参数、字面美元符号和空变量的可靠写法。417 收藏 -
通过固定工作量对比 GOMAXPROCS,说明 CPU 配额、阻塞任务和运行时默认策略如何影响 Go 并发吞吐,并给出上线复核清单。417 收藏 -
slices.SortStableFunc 并不会替你修正比较函数。本文从负、零、正返回值、相等元素保序和严格弱序三个边界,说明怎样写出可检查的稳定排序比较器。416 收藏 -
Go 1.23 引入的 slices.Collect 会把 iter.Seq 收集为新切片,但空序列返回 nil,容量也不是 API 承诺。本文拆开 nilness、容量、元素别名和重复消费边界,给出稳定测试写法。416 收藏 -
QueryContext 超时后连接仍在 InUse,不一定是连接泄漏。本文从驱动取消能力、Rows.Close、Rows.Err 和 DB.Stats 四个角度说明如何定位回池延迟。416 收藏 -
Go 的 sync.Mutex 首次使用后不能复制。本文用结构体赋值和值接收者说明复制如何造成永久等待或保护失效,并给出指针接收者、go vet 与并发测试的修复清单。416 收藏 -
Golang · Go问答 | 1个月前 | go · 路由 · net/http · ServeMux · 兼容性 · Go ServeMux PathValue http.Request.Pattern 路由模式
Go 1.22 引入增强路由后,http.Request.Pattern 可以告诉处理器究竟是哪条 ServeMux 模式命中了请求。本文用 GET /orders/{id} 实验说明 Pattern 与 PathValue 的区别、未命中时的空值行为,以及旧路由兼容判断。415 收藏 -
Go 用 bufio.Reader 解析带长度或分隔符的协议时,Peek 只是查看缓冲内容,不会推进读取位置;Discard 才会消费字节。本文用一个简化帧协议拆开 Peek、Read、Discard、UnreadByte 的数据流转和边界处理。414 收藏 -
Go 的 regexp.FindAllStringSubmatchIndex 返回的是每个匹配和捕获组的字节偏移,不是字符下标。本文用中文输入、空捕获组和 ExpandString 拆开它的返回结构与边界。414 收藏 -
Golang · Go问答 | 1个月前 | 标准库 · 单元测试 · 资源管理 · Go问答 · Go testing.T.Cleanup Cleanup 注册顺序 Go 子测试资源释放 testing 包
Go testing.T.Cleanup 采用后注册先执行的顺序,并且父测试的清理会等所有子测试完成后才运行。本文用嵌套测试和失败场景拆开注册时机、执行边界与资源释放写法。414 收藏 -
Go 返回短子切片时,普通切片表达式仍会共享大数组。本文用 make+copy、slices.Clone 和 bytes.Clone 说明如何复制窗口数据,并解释三索引表达式为何不能解决内存持有问题。414 收藏 -
Go os.CreateTemp 的 pattern 不是完整文件名模板,而是带可选星号的前缀和后缀规则。本文用批次前缀、随机段和扩展名组成可追踪临时文件名,说明 Name、Write、Close、Remove 的配合方式,以及目录、权限和失败清理的边界。414 收藏 -
对比 Go filepath.IsLocal 与 filepath.Clean 的职责、边界输入和安全路径拼接方式,说明词法判断与真实文件系统检查不能混为一谈。414 收藏 -
Go 接口如果只返回一段错误字符串,调用方很难判断应该重试、提示用户还是修复参数。本文从订单查询接口的真实场景出发,设计可演进的结构化错误、参数语义、错误映射和兼容策略。413 收藏 -
处理用户传入的文件名时,先用 filepath.IsLocal 做词法边界检查,再把通过的路径交给 filepath.Join;本文说明 Clean、绝对路径、空字符串和符号链接之间各自能解决什么问题。413 收藏