Go语言技术文章
-
Go 反射删除 map 元素时,SetMapIndex 的 elem 要传 reflect.Value{};本文说明零 Value、类型可赋值和 nil map 的边界。396 收藏 -
Go log/slog 的 GroupValue 可以把多个 Attr 组成一个 Group,再配合 slog.Group 形成 request、user、deployment 等嵌套字段。本文说明空组消除、切片不可变和不同 Handler 输出时的组织方式。396 收藏 -
filepath.Join 采用客户端目标系统的路径规则,不能自动代表 SFTP 远端命名空间。本文区分本地与远端路径,给出单文件名拼接示例,并说明 ToSlash、词法清理和服务端权限的边界。396 收藏 -
Go http.Cookie.Valid 并不检查 SameSite 枚举。本文拆分标准库字段校验、SameSite 序列化与业务白名单,帮助定位 Cookie 看似被拒绝或属性消失的问题。396 收藏 -
用 Go reflect.TypeFor 和 Implements 构建类型能力检查工具,按候选名称判断 io.StringWriter 接口支持情况,提供完整代码、退出码与回退思路,并区分类型匹配和实例可用性。396 收藏 -
Go 升级后 runtime.KeepAlive 相关代码出现差异时,先不要把问题归因于 API 随机变化。本文从对象可达性、终结器、底层资源句柄、数据竞争和 unsafe/cgo 约束五条线定位原因,并给出正确放置 KeepAlive 的最小写法。396 收藏 -
Go 的 crypto/sha512.New384 返回 SHA-384 哈希对象,摘要原始长度固定为 48 字节。本文结合 hash.Hash、Sum 的追加语义和十六进制编码,说明如何避免把字节长度误读成字符串长度。396 收藏 -
go/types.Info.InitOrder 记录的是包级变量初始化表达式按依赖排序后的结果,不包含 init 函数调用。本文从类型分析与程序启动两个生命周期拆开解释,并给出读取 InitOrder、处理空结果和不完整检查结果的实用写法。396 收藏 -
开启 encoding/csv.Reader 的 ReuseRecord 后,Read 可能复用上一条记录的切片。本文解释下一行为什么会改写当前字段,以及何时复制记录、ReadAll 和并发读取有哪些边界。396 收藏 -
区分Ristretto写入缓冲、Set返回值与策略接纳,说明Wait为何不能保证命中,并给出诊断片段、TTL与成本排查及缓存未命中回源写法。395 收藏 -
Go 的 atomic 操作只为原子访问提供同步语义,同一共享变量若再混用普通读写,仍可能产生数据竞争。本文按资产、攻击路径、防护控制和验证清单说明统一访问策略。395 收藏 -
Golang · Go问答 | 4星期前 | go · 垃圾回收 · 性能排查 · 运行时 · 内存分配 GOGC Go GC runtime.MemStats HeapAlloc TotalAlloc NumGC
Go GC 频繁触发时,先用 TotalAlloc 增量判断分配速率,再对照 HeapAlloc、HeapObjects 和 NumGC,区分短命对象过多、存活堆增长与调参边界。本文用一个最小采集器给出判断路径。395 收藏 -
用 Go container/heap 实现可改期、可取消的定时任务优先队列,说明堆接口、位置索引与延迟删除,给出完整示例及接入调度器的注意事项。395 收藏 -
Go Benchmark 结果抖动时,先检查 ResetTimer、RunParallel 与外部资源是否把计时范围混在一起。本文用固定输入、并行边界和重复运行命令整理 ns/op 与 allocs/op 的正确解释方式。395 收藏 -
Go 的 slices.Compare 会从索引 0 开始逐个比较两个切片,首个不相等元素决定结果;如果共同前缀完全相同,则短切片更小。本文说明返回值、长度边界、元素约束和 CompareFunc 的选择。395 收藏