Go问答技术文章
-
Go 测试偶发失败时,可能是测试顺序依赖了共享状态。本文说明 go test 的 -shuffle 如何随机顺序、如何保存种子复现,以及怎样用隔离状态和清理逻辑修复问题。132 收藏 -
context.WithCancel 只能表达主动取消,不能凭空产生超时。本文用一个可运行的 HTTP 调用场景拆开取消传播、deadline 和超时错误的边界,说明如何选择 WithCancel、WithTimeout 与 WithDeadline。132 收藏 -
Go 的 maps.Keys 可以把 map 的键序列交给调用方继续处理,但它不承诺键的顺序。本文用空 map、无序输出和 slices.Sort 三个边界说明如何安全地收集、排序并验收结果。132 收藏 -
读取日志头、文件摘要或上传内容前 N 个字节时,io.LimitReader、io.CopyN 和手动缓冲的行为并不一样。本文按目标是限制读取、严格读取还是复用缓冲,给出选择边界、EOF 判断和可验证示例。130 收藏 -
Golang · Go问答 | 6天前 | 网络编程 · 并发 · go · 超时处理 · crypto/tls · Go crypto/tls 取消 context 超时 连接状态 HandshakeContext
crypto/tls.HandshakeContext 用于在 TLS 握手阶段接收 context 取消信号,但取消发生在握手前、握手中和握手后,连接状态并不相同。本文用一个最小客户端拆开超时、错误判断和关闭连接的边界。130 收藏 -
Golang · Go问答 | 6天前 | 标准库 · net/http · Go问答 · ServeMux · HTTP路由 · Go 路径参数 http.ServeMux Request.PathValue 路由通配符
Go 1.22 引入的 http.ServeMux 路径通配符可以通过 Request.PathValue 读取,但空字符串既可能表示参数缺失,也可能是合法值。本文用订单路由示例拆开判断边界,并给出可兼容旧版本的处理方式。130 收藏 -
Golang · Go问答 | 1星期前 | golang · Context · 信号处理 · Go问答 · 服务退出 · Go 优雅退出 os/signal signal.NotifyContext 进程信号
Go 服务使用 signal.NotifyContext 接收终止信号时,常见问题不是信号不存在,而是注册时机、父 Context 已取消或测试进程没有真正发送信号。本文用一个最小服务拆解注册顺序、取消边界和可复现的验收方法。129 收藏 -
Go 的 internal 包不是用来显得项目高级,而是给仓库内部代码加编译期边界。判断重点看复用范围、依赖方向、测试替身和未来演进成本。127 收藏 -
Go 1.23 的 slices.Chunk 能把切片按固定大小拆成批次,但空切片、n 小于 1、最后一批不足和底层数组共享都容易被误读。本文用批量写入场景说明它的返回边界、内存行为与测试方法。127 收藏 -
Go 服务把租户路径和用户输入拼成下载链接时,url.JoinPath 会清理 ./ 与 ../,却不会替你确认用户是否越过了业务根目录。本文用最小示例拆开 PathEscape、JoinPath 和边界校验的职责。127 收藏 -
strings.SplitAfterSeq 返回惰性序列,适合逐段读取并保留分隔符。本文用一个可运行示例说明遍历时的调用链、空输入边界和与 SplitAfter 的取舍。127 收藏 -
Go 1.23 引入 runtime/debug.SetCrashOutput,可把未处理 panic 和致命运行时错误额外写入文件。本文用一个可运行的最小例子解释文件句柄复制、关闭时机、覆盖规则与并发替换边界。125 收藏 -
解释 Go iter.Pull2 如何把 iter.Seq2 转成逐项拉取的 next 与 stop,重点验证提前停止时为什么必须调用 stop,以及双值序列结束后的边界行为。123 收藏 -
Go 服务里调用 context.WithCancel 后忘记 cancel,可能让定时器和子 goroutine 活得比请求更久。本文用一个可复现的小例子,说明 defer cancel 的正确位置、循环里的取消边界,以及如何用 goleak 和 pprof 复查。122 收藏 -
Golang · Go问答 | 3星期前 | WebAssembly · Go问答 · 前端交互 · 浏览器存储 · syscall/js · Go localStorage WebAssembly syscall/js js/wasm Wasm运行时脚本
Go 编译到浏览器 WebAssembly 后,可以通过 syscall/js 调用 localStorage。关键是使用 GOOS=js GOARCH=wasm 构建,保持 Wasm 运行时脚本与编译器大版本一致,把 JavaScript 调用收口并处理存储不可用、JSON 损坏和 MIME 类型错误。122 收藏