Go问答技术文章
-
Go slice append 后原切片内容被覆盖,通常是因为派生切片与原切片共享底层数组且仍有备用容量。本文用最小示例说明 len、cap、三下标切片与 copy 的选择边界。289 收藏 -
Go 1.27 修复了 gofmt 的列对齐判断,少量旧文件重新格式化时可能出现空格变化。本文说明如何固定 Go 工具链、审阅纯格式化 diff,并把检查接入 CI。288 收藏 -
Go txtar.Parse 将注释区和文件段拆成 Archive。本文说明标记行、Files 顺序、末尾换行与输入切片引用,并给出保留独立存储的内存解析示例。288 收藏 -
llrb 依赖 Less 定义的稳定排序关系。通过值快照任务索引说明原地改键为何影响检索,以及旧键删除、新键插入、辅助表和并发更新的责任。288 收藏 -
Go channel 的关闭责任应交给决定“不再发送”的生产者:单生产者完成发送后直接关闭,多生产者等待全部退出后由协调者只关闭一次。本文结合 context、WaitGroup 和 range,说明如何避免重复关闭、向已关闭 channel 发送以及 goroutine 泄漏。288 收藏 -
纯 Go DNS 解析器遇到搜索域结果差异时,先在同一环境比较短名、完整名称和尾点绝对名称,再检查 search、ndots 与实际解析器。提供有限超时的 Go 对照程序,说明候选顺序、配置修复及内部名称安全边界。287 收藏 -
Golang · Go问答 | 3星期前 | HTTP · go · Get · Post · 故障排查 · net/http · Microsoft Visual Studio cnwizards(c++程序开发包) net/http HTTP重定向 CheckRedirect Go Redirect POST变GET
Go Client 自动跟随重定向时,301、302、303 会让 POST 后续变成 GET,而 307、308 保留原方法和请求体。本文用服务端与 CheckRedirect 示例说明状态码选择、请求体重放和停止自动跟随的排查方法。286 收藏 -
pflag 中不能通过比较当前值和默认值判断用户是否传参,因为用户可能显式传入了与默认值相同的值。本文说明 Changed、Visit 与 NoOptDefVal 的使用边界。286 收藏 -
go test -shuffle 暴露出结果不稳定时,先保存随机种子,再区分共享状态、并行调度和测试缓存。本文用固定种子复现问题,并给出修复后的回归命令。286 收藏 -
Go os.File.ReadAt 只负责按偏移读取,不会替你关闭文件。本文从打开点、defer Close、ReadAt 返回值和并发路径四处排查资源未释放。286 收藏 -
Go HTTP 连接池出现空闲连接通常是 keep-alive 复用的正常结果。本文从 Response.Body、Transport 复用和三个空闲连接参数入手,给出排查与收紧连接池边界的方法。285 收藏 -
rsa.PrivateKey.Validate 返回错误时,不要直接修改 N、D、P、Q 等字段。本文用不泄露私钥数值的诊断代码区分字段缺失、素数乘积与 N 不一致、E 不合法和原始密钥损坏,并给出重新解析 PKCS#1/PKCS#8 的修复路径。285 收藏 -
url.PathEscape 只负责把一个值编码成安全的 URL 路径段,解析后的 URL.Path 仍会呈现解码结果。本文用可复用的 Go 示例区分 Path、RawPath 与 EscapedPath,解决包含斜杠的路径参数看起来被错误解码的问题。285 收藏 -
Go TLS 握手失败时,先用显式握手固定错误阶段,再沿错误链识别证书校验问题,并核对 MinVersion、MaxVersion 与最终 ConnectionState.Version,从而区分身份校验失败和协议版本不兼容。284 收藏 -
Golang · Go问答 | 2星期前 | TLS · net/http · Go问答 · Go net/http crypto/tls http/2 net.Conn ALPN ConnectionState
Go 1.27 支持 net/http 从用户提供的 net.Conn 读取 TLS ALPN 状态。本文说明自定义 DialTLSContext 包装连接时如何保留 ConnectionState,并区分握手未完成、协议未协商和 HTTP/2 未尝试三类问题。284 收藏