Go语言技术文章
-
判断 Go append 是否更换底层数组,先比较追加量与剩余容量,再在非空、相同起点的整数切片中观察元素地址和修改影响。文中给出容量充足与不足的对照示例,并区分限制容量与复制。346 收藏 -
围绕租户订单查询,讲清Badger前缀键设计、Seek定位和循环范围,给出复制键值、关闭迭代器及处理空结果与读取错误的Go写法。345 收藏 -
Go 1.27 的 size-specialized memory allocation 会让部分小对象分配更快,同时让二进制增加约 60 KB。本文说明如何区分预期体积变化与真实回归,使用同一源码构建对照产物,并在必要时用 GOEXPERIMENT=nosizespecializedmalloc 临时退回。345 收藏 -
Go Cron 可以在单个 Cron 表达式前加 CRON_TZ=Area/City,让该任务按独立 IANA 时区计算,同时保留调度器的默认时区。本文说明全局配置、单任务覆盖、错误处理与夏令时边界。345 收藏 -
Go 中 channel 无人关闭不一定等于内存泄漏,但 range 接收、发送阻塞和提前退出都会让 goroutine 长期存活。本文用 goroutine 栈定位阻塞点,并给出 ctx.Done、发送方关闭和复查清单。345 收藏 -
text/scanner.Scanner.IsIdentRune 通过字符和位置回调决定一个标识符能由哪些 rune 组成。本文从默认规则出发,说明如何用 i 区分首字符和后续字符,并处理空白、TokenText 与 Scanner 封装边界。345 收藏 -
Go 的 http.Request.UserAgent 会读取请求中的 User-Agent 字段。本文说明空值处理、日志记录和轻量归类,并划清它与认证、授权和设备识别的边界。345 收藏 -
说明 Go runtime.AddCleanup 的输入与引用边界,通过独立清理状态、显式 Close 和幂等释放示例,解释 nil、闭包反向引用、KeepAlive、Stop 及不保证回调时机等问题,并给出计数与测量方法。345 收藏 -
Go 的 csv.Writer 默认使用 LF;面向依赖 CRLF 的 Windows 工具导出时,应在第一次写入前设置 UseCRLF=true,并在 Flush 后检查 Error。本文拆开换行、缓冲和错误边界。345 收藏 -
围绕 Go constant.MakeFromLiteral 的三个参数,说明如何把 token.INT、FLOAT、IMAG、CHAR、STRING 与原始字面量正确配对,处理 Unknown,并在源码分析器中复用 constant.Value。345 收藏 -
Go text/template 默认允许缺失 map key 继续执行。本文说明 missingkey=error、default、zero 的差异,并用 Execute 错误处理和排查清单,让关键模板字段缺失时及时暴露问题。345 收藏 -
用请求级 context 派生查询超时,把它传给 database/sql 的 QueryContext,并在取消、超时和驱动错误之间做出清晰判断,同时保证结果集关闭和连接池资源回收。344 收藏 -
Go path.Dir 适合处理 URL、对象存储键等正斜杠分隔路径。本文说明普通路径、末尾斜杠、根路径和空路径的返回边界,并区分 path.Dir 与 filepath.Dir 的生产使用场景。344 收藏 -
用 go-colorful 的 Hex 和 Lab 方法,把 #rrggbb 或 #rgb 十六进制颜色转换成 CIE L*a*b* 坐标,并说明错误处理、D65 参考白和后续颜色比较的注意事项。344 收藏 -
Go HTTP 超时不能只看一条错误字符串:context deadline、http.Client.Timeout 和 Transport 阶段超时的触发范围不同。本文按请求边界、错误链和连接阶段给出区分方法。344 收藏