Go语言技术文章
-
time.Time 的 Equal 比较时间点,== 还会比较 Location 和单调时钟读数。本文用可运行示例拆开两者的边界,并说明 Round(0)、UTC 与序列化后的差异。458 收藏 -
Golang · Go问答 | 2星期前 | 网络编程 · go · 超时处理 · Go net/http ResponseController SetReadDeadline SetWriteDeadline
Go 的 http.ResponseController 可以在处理器内设置请求读取和响应写出的截止时间,但它不是整个服务的统一超时开关。本文用两个小场景拆开 Handler、Request.Body、ResponseWriter 与底层连接的调用关系,说明超时后的错误判断、清除方式和常见误区。458 收藏 -
Go 中 recover 只记录 panic 而不改 named result,函数可能在异常后返回 nil 错误。本文用最小示例说明 defer、recover、named result 与 goroutine 边界,给出可复用的错误转换和排查清单。458 收藏 -
Go http.Client 默认会跟随重定向。本文用 CheckRedirect 和 http.ErrUseLastResponse 保留原始 3xx 响应,说明 Location、请求头、响应体及普通错误返回的边界。458 收藏 -
自定义 http.RoundTripper 做重试时,真正容易出错的不是循环次数,而是请求体能否重放、方法是否幂等以及错误如何返回。本文用一个可运行的重试 Transport 拆开这三个边界。457 收藏 -
Go HTTP PATCH 更新接口里,字段缺失、显式传 null 和传入新值不能混成一个状态。本文用指针字段、json.RawMessage 和兼容返回设计一个可验证的部分更新接口。456 收藏 -
Golang · Go问答 | 2星期前 | 标准库 · golang · unicode · 字符串处理 · strings.Split Go strings.Fields 字符串分词 Unicode 空白 Go 空字符串
Go 里处理用户输入时,strings.Fields 会按 Unicode 空白归并连续分隔符,而 strings.Split 会保留空字段。本文用可运行示例对比两者在连续空格、空字符串、中文空白和尾部分隔符上的结果,帮助你按数据边界选择 API。456 收藏 -
encoding/hex.AppendEncode 适合把字节编码结果追加到已有缓冲区。本文用 EncodedLen 判断容量,拆开 dst[:0] 复用、尾部追加和切片边界,避免预留不足或误把编码结果当原始字节。456 收藏 -
bytes.Reader 读到末尾后,Seek、Reset 和重新创建 Reader 的效果并不相同。本文用可运行的小例子拆开读取游标、底层字节切片和并发复用边界,帮助你选对复位方式。456 收藏 -
Golang · Go问答 | 1星期前 | CGO · ppc64le · Go问答 · Go链接器 · Go CGO ppc64le linkerFlagSupported CC -mcpu=power10
解释 Go 在 ppc64le 环境探测外部链接器能力时,为什么会因多词 CC 命令丢失尾部参数而误判 -mcpu=power10,并给出识别与规避方法。456 收藏 -
用 io.Pipe 把 Go 的数据生成器直接接到 HTTP 请求体,边编码边上传,不落地临时文件,并正确处理关闭、取消和错误传递。456 收藏 -
同一仓库维护多个 Go 模块时,可以用 go.work 的 use 指令共享本地开发版本。本文说明如何初始化工作区、验证本地解析、区分 go.work 与 replace,并让 CI 用 GOWORK=off 回到独立模块测试。456 收藏 -
go test 显示 (cached) 不一定是代码没更新。本文用 -count=1、GODEBUG=gocachetest=1 和 go clean -testcache 区分正常复用、输入未纳入缓存键与命令参数问题。456 收藏 -
context.Cause 在取消发生前返回 nil。本文用 WithCancelCause 和 WithTimeoutCause 说明读取时机、Err 与 Cause 的区别,以及下游错误映射边界。456 收藏 -
修改 go.mod、go get 或 replace 后,vendor/modules.txt 可能与模块图失配。本文按单模块、工作区、替换依赖三个边界说明如何重建 vendor 并用 vendor 模式复查。456 收藏