golang
已收录文章:14427篇
-
该用io.ReadAll当需一次性获取小数据(≤10MB)的[]byte或string,如JSON响应、配置文件;该用io.Copy当需流式转发、大文件落地或写入另一io.Writer,因其内存恒定、不OOM。405 收藏
-
cleanenv不支持自动探测格式,仅通过文件后缀识别解析器:.yaml/.yml→YAML、.json→JSON、.toml→TOML;无后缀或错误后缀将静默失败或panic,且不解析内容;ReadEnv与ReadConfig需手动控制加载顺序与覆盖逻辑。401 收藏
-
filepath.WalkDir比Walk快得多,因其默认用fs.DirEntry一次读取目录全部条目,IsDir()和Name()零开销不触发stat;而Walk对每个项强制os.Lstat,实测耗时仅Walk的1/3~1/2,但回调中调用d.Info()会抵消该优势。433 收藏
-
Go1.21+的rate.Limiter.SetLimit()可安全修改rate,但burst不变,需同比缩放;burst变更必须原子替换整个*rate.Limiter实例。415 收藏
-
使用指针返回可避免大结构体拷贝、提升性能,并支持修改原始数据。通过逃逸分析,Go能安全返回局部变量地址;基本类型指针需谨慎使用,常用于标记“空值”;当接口方法为指针接收者时,必须返回指针以满足接口实现。479 收藏
-
retry.Attempts(3)表示总共执行3次(含首次),即最多重试2次;需写retry.Attempts(4)才能重试3回;必须配retry.Context(ctx)响应取消、retry.DelayType(retry.BackOffDelay)启用指数退避、retry.RetryIf过滤错误,且HTTP重试须克隆Body并区分临时性错误。397 收藏