Go语言技术文章
-
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 收藏 -
用一个可复现的并发通知示例,说明 WaitGroup、关闭通道和超时断言怎样配合,避免 Go 测试偶发卡死或漏验收。445 收藏 -
govulncheck 的价值不是多报漏洞,而是把模块命中、包导入和漏洞符号可达分层。本文给出调用链核对、构建条件对齐及升级复核方法。445 收藏 -
fs.ValidPath 并不会因为反斜杠本身判定路径非法。本文拆开 io/fs 逻辑路径、Windows 本地路径转换和文件系统实现三层边界,说明如何正确处理跨平台路径。445 收藏 -
Go 的 CertPool.AppendCertsFromPEM 返回 true 只表示至少一个 PEM 证书解析成功,并不代表所有证书有效或已经建立信任链。本文拆解 true/false 边界,给出逐块诊断和 Certificate.Verify 的分层判断方法。445 收藏 -
Golang · Go问答 | 3星期前 | 错误处理 · go · 数据库 · 排查 · SQL · rows.Close rows.Next Rows.Err Go database/sql 空结果
Go 查询 database/sql 时,Rows.Next 返回 false 不一定代表空结果。本文用一个分页查询故障拆开 Next、Err、Close 的职责,给出可复用的遍历模板、异常定位顺序与资源收尾检查。444 收藏 -
Go 1.22 引入的 slices.Concat 可以按顺序合并多段同类型切片。本文核对它的泛型签名、空输入返回 nil、结果切片与源切片的隔离关系,并给出容量和自定义切片类型的判断方法。444 收藏 -
Go 交叉编译开启 cgo 后找不到目标编译器,通常是只设置了 CGO_ENABLED 而没有准备匹配 GOOS/GOARCH 的 CC、目标头文件、运行库和链接器。本文按变量、工具链和报错层次给出排查方法。444 收藏 -
Go 表驱动测试加上 t.Parallel 后,多个子测试可能读到同一个循环变量。本文解释暂停时机、Go 版本差异、局部绑定写法和 -race 排查边界。444 收藏 -
Go 使用 json.Decoder 时,io.EOF 通常表示输入流已经正常结束,不等于 JSON 格式错误。本文用代码区分 EOF、空输入、UnexpectedEOF 和真正语法错误。444 收藏 -
Go test ./... 返回很快并不一定是测试没执行,本文区分本地目录模式与包列表模式,说明如何识别 (cached)、用 -count=1 强制重跑,并选择 GODEBUG 与 testcache 清理范围。444 收藏 -
Go zip.NewReader 不能直接接收普通 io.Reader。本文用 bytes.Reader 和临时文件说明如何提供 ReaderAt、准确 size,并正确处理 ZIP 成员资源。444 收藏