Go语言技术文章
-
go generate 找不到生成器时,问题通常是 GOBIN 没进入 PATH。本文比较 Go 1.24+ 的 tool/go tool、仓库相对路径和带版本 go run,给出本机与 CI 都能复现的固定方式。411 收藏 -
讲清 Go testing.B.ReportMetric 的参数、单位、b.N 归一化、b.Elapsed 计时指标、并行基准汇总和内置指标覆盖边界,配合可直接改写的 Go 示例记录自定义 benchmark 指标。411 收藏 -
运行 go run transfersh-server/*.go 时出现“cannot find package”错误,根本原因是 Go 未自动下载项目所需的第三方依赖包,需手动执行 go get 安装缺失模块。 运行 go run transfersh-server/*.go 时出现“cannot410 收藏 -
Go 写文件时,os.File.Sync 成功并不等于包含它的目录项也完成持久化。本文用临时文件、重命名和目录同步的完整流程,说明崩溃恢复时该看哪些边界。410 收藏 -
Go slog 适合结构化记录请求和业务事件,但把请求对象直接写入日志很容易带出手机号、令牌或地址。本文用字段白名单、LogValuer 和审计分层,搭一套可检查、可回退的日志边界。410 收藏 -
用 Go io.Copy 处理上传、代理和文件转存时,先限制输入边界,再利用 ReaderFrom 的快路径,最后用可复现基准确认吞吐与内存变化。409 收藏 -
Go 1.27 为 compile、link、asm、cgo、cover、pack 等工具加入 response file(@file)参数解析。本文用一个构建参数过长的场景,说明文件格式、引号换行边界、适用工具和迁移核对点。409 收藏 -
Go modules 中 replace 写了却仍下载远程模块时,按主模块、require、替换版本和 go list -m -json 结果逐层定位真实来源。409 收藏 -
Go 的 json omitempty 不会按传统规则省略结构体值字段。本文用最小示例说明值字段、指针字段和未提供状态的区别。409 收藏 -
解释 Go testing.T.Parallel 为什么要等父测试函数返回,拆解 t.Run、并行栅栏、共享资源和调试检查方法。409 收藏 -
Go 的 slices.SortStableFunc 会保留比较器判定为相等的元素在原切片中的相对顺序。本文用带 score 和 id 的记录演示比较器写法、稳定性测试、tie-breaker 的影响,以及原地排序和复制排序的选择。409 收藏 -
io/fs.ValidPath 专门判断文件系统接口使用的相对路径是否合规。本文从点号、斜杠、空路径和归档条目四个边界入手,给出可运行的校验代码以及如何避免把合法嵌套路径误判成危险输入。408 收藏 -
用一个懒加载配置的实战场景,拆解 Go sync 标准库如何让并发调用共享一次初始化结果,重点说明错误也会被缓存、失败重试为何必须创建新实例,以及如何用测试验证并发语义。408 收藏 -
Go 1.25 为 testing.T、B、F 增加了 Output 方法。它把 io.Writer 接到同一条测试输出流,保留测试归属和内部缓冲,适合替代 fmt.Println 记录并行测试日志。本文拆开调用链、换行刷新和生命周期边界。408 收藏 -
用同一段 Go 示例生成 RSA、ECDSA、Ed25519 和 X25519 公钥,验证 MarshalPKIXPublicKey 与 ParsePKIXPublicKey 的返回类型、接口断言和 DER 格式边界。408 收藏