Go语言技术文章
-
Go filepath.Rel 用基准路径和目标路径计算操作系统相关的相对路径。本文说明参数顺序、子目录与返回上级、相对输入和不同路径卷的错误边界,并给出可复用的封装。325 收藏 -
把 sync.WaitGroup.Add 放进新 goroutine,可能让 Wait 提前返回,也可能触发计数为负或 Add 与 Wait 并发的运行时 panic。本文用最小结构说明计数边界、批量任务写法和 go vet 检查方式。325 收藏 -
解释 Testify mock 调用记录中的可变引用为何影响事后断言,通过 Run 回调复制调用时字段,区分匹配器、调用次数、独立快照及切片映射的复制和并发边界。325 收藏 -
Go malgo 用 Playback、Capture、Duplex 和 Loopback 区分音频方向。本文说明如何分别枚举播放与捕获设备、让 DeviceConfig 与任务目标一致,并处理全双工、回采和资源释放边界。325 收藏 -
sql.NamedArg 只是把参数名称和值交给 database/sql,能否按名字绑定还取决于驱动的占位符语法和 NamedValueChecker 等接口。本文拆开参数转换链,说明为什么有些驱动必须改用位置参数,以及如何保持参数化查询。325 收藏 -
解释 Go png.Encoder 的四个 CompressionLevel 如何影响 PNG 编码耗时和输出大小,给出实时接口、静态资源与实验基线的选择方法,并说明零值、未知值和精确字节序列的兼容边界。325 收藏 -
RawValue 的 FullBytes 非空时,Marshal 优先使用整段编码,修改 Bytes 不会自动使旧编码失效。本文用 OCTET STRING 字节对照展示问题,给出清空 FullBytes 与构造新值两种写法,并说明切片共享、基准方法和嵌套数据限制。325 收藏 -
Go lzw.Writer 要求输入字节小于 1<325 收藏
Go 的 Base64 URL 编码要去掉等号填充,直接使用 RawURLEncoding,并让编码器和解码器保持匹配;本文对比填充差异、兼容输入和错误处理。325 收藏
Go 的 regexp/syntax.Parse 可以在配置进入业务流程前解析正则并返回语法树或错误。本文说明如何固定 Flags、识别 syntax.Error 错误码、限制输入长度、脱敏记录日志,并在发布前区分语法可解析与业务匹配正确。325 收藏
Go Lip Gloss 里可以用一个基础 Style 保存颜色、边框和间距,再用 Inherit 让标题、正文和警告样式只补齐未设置的规则。本文对比赋值复制与继承的区别,给出 v2 写法、旧代码风险和回归检查清单。324 收藏
Go 基准测试中,如果目标函数的返回值完全没有用途,编译器可能把无副作用计算删掉。Go 1.24+ 优先使用精确的 b.Loop() 循环;兼容旧式 b.N 时用包级结果汇总变量保住被测结果,并把初始化和计时边界分开。324 收藏
用 Go net.LookupSRV 读取 SRV 服务发现记录,拆解 service、proto、cname、Target、Port、Priority、Weight 的关系,并说明如何安全组合拨号地址。324 收藏
Go slog 的 Handler 会过滤未启用的日志级别,但函数参数已经提前求值。本文用 logger.Enabled 在昂贵字段构造前短路,再比较格式化辅助函数与 LogValuer 的延迟计算边界。324 收藏
go list 在 replace 场景下显示的模块路径与本地目录不一致时,先用 -m -json 区分 Path、Replace、Dir 和 GoMod,再检查 go.mod、go.work 及执行目录,按证据修正替换关系。324 收藏