Go问答技术文章
-
shopspring/decimal 的 MarshalJSONWithoutQuotes 是包级全局开关,开启后所有 Decimal 的 JSON 输出都会从字符串变成数字。本文说明它的影响范围、并发修改风险,以及如何用字段级 MarshalJSON 控制单个接口。476 收藏 -
oggvorbis的Length和Position以采样帧计数,Read返回值则是交错float32元素数量。本文给出多声道单位换算、进度快照示例,以及未知长度、缓冲区和定位的边界处理。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 1.27 引入泛型方法后,方法可以声明自己的类型参数,但接口方法仍不能声明类型参数。本文用 Rand.N、函数类型推断和接口边界说明如何判断代码能否编译,以及如何保留兼容性。474 收藏 -
Go 使用 filepath.Ext 判断文件扩展名时,只会返回最终路径元素最后一个点开始的后缀。本文结合隐藏文件、多重后缀和大小写,给出可复用的判断规则。474 收藏 -
Go 的 encoding/json 默认会把 JSON 字符串中的小于号写成 \u003c,这通常是 HTML 安全转义而不是乱码。本文说明如何判断、何时使用 SetEscapeHTML(false),以及关闭后仍需遵守的 HTML 安全边界。474 收藏 -
Go 的 string 下标访问的是 UTF-8 字节而不是字符。本文用 Go你 示例说明 len、s[i]、range、[]rune 和 unicode/utf8 的边界,避免中文截断和错误计数。474 收藏 -
Go json.Decoder 将 JSON 解码到 interface{} 时,数字默认会变成 float64。本文用 UseNumber 保留 json.Number,再按业务需要转换为 int64、float64 或字符串,并比较结构体、动态 map 与 RawMessage 的适用边界。474 收藏 -
解释 Go mime/multipart 的 NextPart 为什么隐藏 Content-Transfer-Encoding 并在读取时自动解码 quoted-printable,给出 NextRawPart 保留原始字节的写法与选择边界。474 收藏 -
解释Go Colly异步请求为何在主程序退出前尚未完成,给出Wait正确位置、本地页面示例和错误记录方法,并说明回调及后台写入的等待边界。474 收藏 -
Go Cookie 不被浏览器保存,通常不是 Cookie 结构体失效,而是响应头没有及时写出,或 Domain、Path、Secure、SameSite、MaxAge 等属性不符合当前请求环境。本文用最小 net/http 示例拆分接收、存储和发送三层排查。474 收藏