Go问答技术文章
-
Go http.Request.Clone 会复制 Header,适合在保留原请求的同时为下游请求追加字段;本文对比 Clone、WithContext 和 Body 的复制边界,给出隔离 Header 修改的写法。476 收藏 -
Go csvutil 解码 CSV 空字段时,普通值会得到类型零值,指针字段会得到 nil;本文用对照示例说明 omitempty、结构体复用和缺失状态的处理边界。475 收藏 -
cgo 缺头文件、找不到库与符号未解析属于不同问题。本文以 Linux GCC 静态库示例,说明 CGO_ENABLED、-I、-L、-l 的职责,以及迁移 CI 时需要保留的工具链和原生文件。475 收藏 -
解释 Go defer 直接参数与闭包读取的差异,结合 Go 1.22 循环变量语义,给出显式传参和小函数隔离生命周期的写法。475 收藏 -
用 slog.Level.UnmarshalText 解析 Go 日志级别配置,区分空值默认、非法值错误和数值偏移,给出可复用的配置加载函数。475 收藏 -
go/types.Hasher 面向源码类型与 types.Identical,reflect.Type 面向运行时类型表示。本文解释两者为什么不能直接比较哈希值,以及源码分析缓存和运行时缓存分别应该怎样选键。475 收藏 -
Go 循环中直接 defer 会把关闭动作推迟到外层函数返回。本文用逐个处理文件的场景,说明如何缩短 defer 生命周期,并用命名返回值保留 Close 错误。475 收藏 -
Go runtime/metrics 的 Sample.Value 不能直接按一种数值类型读取,应先用 Kind 判断 KindBad、KindUint64、KindFloat64 或 KindFloat64Histogram,再调用对应方法。本文说明类型分派、未知指标处理和复用采样切片时的边界。475 收藏 -
Go 服务端可以在 ClientHelloInfo.SupportedVersions 中读取客户端声明支持的 TLS 版本,但它不是最终协商结果。本文说明回调读取、TLS 1.2 以下版本的推导边界、服务端 MinVersion/MaxVersion 的交集判断,以及握手完成后用 ConnectionState.Version 确认最终版本。475 收藏 -
从字段缺失、零字节文件、读取游标和写入失败区分Go multipart上传为空的原因,给出FormData最小提交和本机临时落盘诊断代码,比较解析大小与复制字节数。475 收藏 -
Go go toolchain 配置没有生效时,先检查当前目录、GOTOOLCHAIN 来源以及 go.mod、go.work 的 go/toolchain 行,再按优先级清理覆盖配置。本文给出一套从现象到最小确认的排查顺序。475 收藏 -
解释Go Colly异步请求为何在主程序退出前尚未完成,给出Wait正确位置、本地页面示例和错误记录方法,并说明回调及后台写入的等待边界。474 收藏 -
Go Cookie 不被浏览器保存,通常不是 Cookie 结构体失效,而是响应头没有及时写出,或 Domain、Path、Secure、SameSite、MaxAge 等属性不符合当前请求环境。本文用最小 net/http 示例拆分接收、存储和发送三层排查。474 收藏 -
Go jsontext.Decoder.PeekKind 可以查看下一个 JSON token 的类型而不推进读取偏移。本文说明如何根据 Kind 选择 ReadToken、ReadValue 或 SkipValue,并区分 KindInvalid、io.EOF 与对象数组结束标记。474 收藏 -
解释Go SJSON原地替换的字节长度条件、len与cap差异及返回切片所有权,给出独立输入示例和可复现分配基准,避免把成功替换误当成零分配。473 收藏