Go问答技术文章
-
Golang · Go问答 | 4星期前 | 代理 · 环境变量 · 故障排查 · HTTP客户端 · Go问答 · Go http.Transport http.Client ProxyFromEnvironment HTTP_PROXY HTTPS_PROXY NO_PROXY
Go HTTP 客户端代理环境变量不生效,通常不是变量名写错,而是请求没有走 DefaultTransport、自定义 Transport 覆盖了 Proxy,或进程首次解析代理后才修改环境变量。本文给出直接探测、修复和复查方法。282 收藏 -
Go fuzzing 找到失败输入后,怎样从日志、testdata/fuzz 目录和 -run 路径中定位首次失败案例,并把它变成稳定回归测试。282 收藏 -
signal.NotifyContext 返回的 stop 不只是结束 context,它还会注销信号接管并释放关联资源。本文用优雅退出、重复测试和短生命周期任务说明 stop 的调用时机与边界。282 收藏 -
在 Go 泛型约束中,~T 表示底层类型为 T 的全部类型,因此既能接受预声明类型,也能接受以它为底层类型的自定义类型;但方法仍须在约束中显式声明。282 收藏 -
Go pprof 火焰图中占比最高的函数不一定是最佳优化点。本文结合 flat、cum、调用路径和业务基线,说明如何判断真正值得优化的 CPU 热点并安全复测。282 收藏 -
设置 GOPRIVATE 后仍看到 proxy.golang.org 请求,通常是模块路径未匹配、GONOPROXY 覆盖或 GOPROXY 回退造成的。本文按检查、匹配、架构选择和缓存复查四步定位。281 收藏 -
Go text/template 遇到嵌套 define 同名覆盖时,按关联模板、Parse 顺序、文件基名和 ExecuteTemplate 入口逐项定位,避免执行到错误定义。281 收藏 -
Go base64.CorruptInputError 中的数字是原始输入的零基字节偏移,不是解码结果长度。本文用 errors.As 提取偏移,并说明非法字符、换行、补位和 Strict 模式的排查边界。280 收藏 -
Go 1.27 的 simd 与 simd/archsimd 仍由 GOEXPERIMENT=simd 控制。本文说明启用门槛、两层 API 差异、可移植层的硬件与纯 Go 回退,以及如何用 build tag、GOARCH 和 CPU 特性检查保留稳定的标量路径。280 收藏 -
用 Go testing/fstest 和 fstest.MapFS 区分符号链接自身、链接目标与 Open 跟随读取,掌握 TestFS、Lstat、ReadLink 的测试边界。279 收藏 -
围绕 Go url.Parse 拒绝控制字符的报错,说明首尾空白清洗、内部控制字符拒绝、协议限制,以及 url.Values 和 PathEscape 的组件化编码边界。279 收藏 -
Go compress/flate 的 Flush 只推出压缩器待处理数据,不提供网络消息边界。本文用长度帧、io.ReadFull、双层缓冲和 Close 说明接收端拿不全数据的排查与处理方法。278 收藏 -
sync.Pool 取出的对象带着上一次请求的字段时,问题通常不是 Pool 失效,而是复用对象没有在交接边界清理。本文从临时对象契约、Reset 设计、Get/Put 时机和不适合放入 Pool 的状态四个方面,整理一套可落地的排查方式。278 收藏 -
整理 reflect.Value.IsNil 支持的 Kind,解释无效 Value、typed nil 与空切片的差异,并给出带 Kind 白名单的安全封装。277 收藏 -
Multistream(false) 只让 gzip.Reader 在首个成员后返回 EOF,并不会省略 trailer 校验。本文解释底层流越界读取的原因,并给出 bufio.Reader、io.ByteReader、Reset 与自定义尾部的可靠处理方式。277 收藏