Go问答技术文章
-
Go regexp.Compile 返回可处理的错误,MustCompile 失败会 panic。本文按源码常量、运行时输入和热更新配置拆开选择边界,并给出保留旧规则的处理方式。298 收藏 -
Go YAML 配置转 JSON 后出现数字或布尔类型差异,通常来自 YAML 解码目标与 JSON 再解码到 any 的默认映射。本文用最小复现定位变化层,并给出结构体、UseNumber 与 RawMessage 的修正方式。104 收藏 -
Go 中 bytes.Equal 和 string == 都是在比较底层字节序列,但 []byte 不能直接做内容比较,nil 与空切片、UTF-8 和 Unicode 规范化又有不同边界。本文用最小例子说明如何选对比较方式。337 收藏 -
Go JSON 流式解码末尾等待,常因混淆容器结束和 Reader EOF。本文用原创数组与连续值示例解释 More、Token、写端关闭、截断错误和读取截止时间。273 收藏 -
multipart 上传里的 filename 是客户端元数据。本文说明 Go 解析器会做哪些路径处理,以及怎样把展示名、服务端存储名、大小限制和覆盖保护分开设计。105 收藏 -
Go HTTP Cookie 是否发送,不只取决于 Cookie 名称,还取决于请求主机和路径。本文用 cookiejar 解释 Path、Domain 的匹配边界,并给出最小排查示例。178 收藏 -
Go HTTP Range 请求返回 200,可能因处理器未实现范围响应,也可能是 If-Range 失配后的正常回退。通过原创 ServeContent 示例讲清请求条件、响应字段、续传交互与代理压缩边界。500 收藏 -
net.ParseIP 返回可变语义的 net.IP 字节切片,失败时返回 nil;netip.ParseAddr 返回可比较、不可变的 netip.Addr 和 error,并支持 IPv6 zone。本文按兼容旧接口、集合去重、错误处理和 IPv4 表示说明两者差异与迁移边界。295 收藏 -
从包依赖、包级变量依赖和源文件顺序三层解释 Go init 函数的执行顺序,并给出排查隐藏初始化依赖与改为显式 Setup 的方法。218 收藏 -
Go plugin 跨机器加载失败,通常不是 plugin.Open 写错,而是平台、工具链、构建参数、共同依赖或文件布局不一致。本文给出分层判断、最小 host/plugin 示例和同构交付、静态编译、IPC 三种修正路径。139 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · 模块 · go · 运行时 · Go模块依赖 BuildInfo runtime/debug.ReadBuildInfo Go构建信息 VCS信息
Go 程序在运行时可以用 runtime/debug.ReadBuildInfo 读取当前二进制携带的模块构建信息。本文拆开 GoVersion、主模块、依赖替换和 Settings 的读取方式,并说明 ok=false 代表什么。172 收藏 -
Go 程序不要把用户配置目录写死为 $HOME/.config。os.UserConfigDir 会按平台选择配置根目录,但环境变量异常时也会返回错误。本文给出从定位、拼接应用子目录到安全写入配置文件的最小实践。440 收藏 -
Go strings.FieldsSeq 在 Go 1.24 中提供按需遍历空白分隔字段的方式,结果是 iter.Seq[string],不必先创建完整的 []string。本文说明它与 strings.Fields 的边界、提前停止写法和旧版本兼容策略。132 收藏 -
Go vendor 构建找不到新依赖,常因缓存已下载而项目快照未同步。本文区分模块声明、缓存与 vendor,给出单模块修复命令、工作区注意事项和交付判断方法。247 收藏 -
Go module replace 在 CI 中不生效,通常不是 replace 语法失效,而是 CI 读取了错误的主模块、缺少 require、精确版本没有命中,或本地替换目录没有随 checkout 进入构建环境。本文用 go env 与 go list 逐层定位并给出可提交的修正方式。488 收藏