Go语言技术文章
-
Go 使用 sql.NullString 扫描可空文本列时,必须同时判断 String 和 Valid。本文用表格、代码和排查清单说明如何区分 NULL、空字符串与普通文本,并正确写回数据库。447 收藏 -
解释 Go encoding/xml Decoder.Strict=false 对缺失结束标签、异常实体和命名空间的实际影响,并说明 AutoClose、Entity 的配置边界与生产选择。447 收藏 -
介绍 Go slog.Group 如何组织 request、order、payment 等嵌套业务字段,并比较 Logger.WithGroup、LogValuer、JSONHandler 与 TextHandler 的适用方式。447 收藏 -
printer.Config 的 Indent 控制基础缩进层级,Tabwidth 和 Mode 决定制表宽度及空格策略。本文用完整 AST 示例讲清组合方式与 gofmt 边界。447 收藏 -
Go 服务接收 JSON 时,json.Decoder 和 json.Unmarshal 的区别不只在写法。本文用连续 JSON 请求的真实场景,说明如何选择解析方式、如何检查请求体边界,以及怎样避免多读数据或漏掉尾部内容。446 收藏 -
Go 的 base64.StdEncoding 默认允许一部分非零尾部填充位,Encoding.Strict 会把这类编码判为 CorruptInputError。本文用最小示例说明尾部脏位、换行容忍和 NoPadding 的边界。446 收藏 -
Go 可以用标准库 embed 在编译期把 HTML、CSS、JavaScript 等静态文件写入可执行程序,再通过 embed.FS、fs.Sub 和 http.FileServer 提供页面。本文给出完整写法,并说明目录、隐藏文件、模板和更新边界。446 收藏 -
Go 的 FormValue 会把请求体与 URL 查询参数统一放入 Form,并按固定优先级返回第一个值。本文用一个重复参数示例说明来源、优先级与明确读取方式。446 收藏 -
Go 遇到 import cycle not allowed 时,问题不是 import 写法,而是包依赖图形成了闭环。本文用 go list 定位循环,并比较接口倒转依赖与共享类型下沉两种拆分方式。446 收藏 -
Go 的 url.JoinPath 会清理路径并把连续斜杠合并为一个,同时处理点段和尾斜杠。本文用紧凑示例说明普通路径、%2F、查询参数及双斜杠敏感接口的边界。446 收藏 -
Go 的 debug/buildinfo.ReadFile 可以离线读取指定二进制内嵌的工具链、主模块和依赖模块信息。本文给出完整示例,说明 Deps、Version、Sum、Replace 的读取方法及缺失边界。446 收藏 -
用一个可复现的并发通知示例,说明 WaitGroup、关闭通道和超时断言怎样配合,避免 Go 测试偶发卡死或漏验收。445 收藏 -
govulncheck 的价值不是多报漏洞,而是把模块命中、包导入和漏洞符号可达分层。本文给出调用链核对、构建条件对齐及升级复核方法。445 收藏 -
fs.ValidPath 并不会因为反斜杠本身判定路径非法。本文拆开 io/fs 逻辑路径、Windows 本地路径转换和文件系统实现三层边界,说明如何正确处理跨平台路径。445 收藏 -
Go 的 CertPool.AppendCertsFromPEM 返回 true 只表示至少一个 PEM 证书解析成功,并不代表所有证书有效或已经建立信任链。本文拆解 true/false 边界,给出逐块诊断和 Certificate.Verify 的分层判断方法。445 收藏