Go语言技术文章
-
用 Go Lumberjack v2 的 MaxSize 按文件大小触发日志轮转,并梳理 MaxBackups、MaxAge、Compress 与单进程写入边界。300 收藏 -
Go Cron 的 Remove 只移除未来调度,不会强行终止已经启动的 goroutine。本文拆开 Entry、调度器和任务执行边界,并给出用 context 主动取消任务的写法。300 收藏 -
Go go-echarts 中,全局配置通过 SetGlobalOptions 作用于整张图,系列配置随 AddSeries 只作用于一条数据系列。本文用最小代码和对比清单说明两者边界、组合方式与常见误区。300 收藏 -
Go 1.24 引入的 os.Root 可以把文件操作限制在指定目录树内。本文用 os.Root.Open 说明相对路径、..、符号链接、错误处理和关闭资源的边界,并对比一次性使用的 os.OpenInRoot。300 收藏 -
Go constant.BinaryOp 不会把分数运算立即变成 float64。本文用 token.QUO 构造 1/3,组合出 7/6,再通过 Num、Denom 和 ExactString 读取精确结果,并说明整数除法与浮点转换的边界。300 收藏 -
Go x509.OID.String 可以把 ASN.1 对象标识符输出为点分十进制文本。本文说明 OIDFromInts 与 String 的配合、空 OID 的日志边界,以及 String、MarshalText、ParseOID 在展示和文本交换场景中的区别。300 收藏 -
Go循环拼接怎样减少临时分配?从字节预算、Grow预留和WriteString用法入手,说明结果持有、禁止复制与Reset边界,并给出分配比较方法。299 收藏 -
Go race 检测器报告 map 并发读写时,先从两条访问栈确认共享对象和冲突类型,再用 go test -race 稳定复现,最后按访问模型选择 sync.RWMutex、单写者 channel 或不可变快照,避免只把一处读写临时包进锁里。299 收藏 -
Go 服务请求结束后内存不降,不一定是 GC 失效。本文只围绕切片容量、缓存引用和 runtime/metrics 指标,说明如何区分活跃堆、保留的 backing array 与尚未归还的运行时页。299 收藏 -
用 go test -race 从冲突访问栈和 goroutine 创建栈定位共享 map 竞态,再用同一把 sync.RWMutex 覆盖读取、写入和遍历路径。299 收藏 -
Go encoding/json/v2 默认会忽略结构体中没有对应字段的 JSON 成员。本文用 RejectUnknownMembers 开启严格解码,并通过 SemanticError、ErrUnknownName 与 JSONPointer 定位多余字段。299 收藏 -
http.Request.Pattern 记录的是 ServeMux 为请求匹配到的注册模式;如果处理器被直接调用、请求没有经过 ServeMux,或只调用了 ServeMux.Handler,字段就可能为空。本文拆开这些边界,给出正确的观测位置和排查方法。299 收藏 -
Go 临时文件删除失败时,关键不是无限重试 Remove,而是先关闭文件句柄、保留主流程错误,再按 PathError 判断权限、路径和生命周期问题。299 收藏 -
Go 读取 tar 归档时,tr.Read 返回 EOF 只表示当前条目读完,tr.Next 返回 io.EOF 才表示整个归档正常结束。本文给出带错误分支的读取循环,并说明损坏输入、未消费数据和 ErrInsecurePath 的处理边界。299 收藏 -
Go iter.Pull 把 push-style 迭代器转换成 next 和 stop 两个函数。只要调用方可能在读完前返回,就应在取得 stop 后立即 defer stop(),让命中条件、自然结束和异常路径都能正确收尾。299 收藏