Go教程技术文章
-
Go weak.Pointer 不会阻止对象被垃圾回收。本文用两个小例子说明 weak.Make、Value、nil 判断和 runtime.KeepAlive 的生命周期边界,并区分弱引用缓存与确定性资源释放。175 收藏 -
Go iter.Pull 把 iter.Seq 的推送式遍历转换为 next 拉取,并返回 stop 管理提前退出。本文用两个序列的并行读取说明 next、ok 和 defer stop 的职责边界。300 收藏 -
Go iter.Seq 用统一接口组合生成、筛选和转换,示例说明消费时计算、提前停止、可重入源与结果物化的取舍,避免把惰性遍历误当作缓存、快照或异步任务。377 收藏 -
strconv.ParseBool 只负责标准布尔文本,配置中的 yes/no 需要在入口处做显式兼容映射。本文说明接受范围、错误边界和一段可复用的 Go 配置解析写法。141 收藏 -
Go 1.23 起可以用 maps.Values 提取 map 的值迭代器,再按需用 slices.Collect 收集成切片或用 slices.Sorted 建立稳定顺序。本文说明直接遍历、收集、排序、重复值和旧版本兼容边界。301 收藏 -
Go maps.Keys 返回无序键迭代器;文章用原创示例区分切片收集与排序,说明空 map、旧版本替代写法,以及结构体键完整比较规则,帮助得到排列可重复的键列表。320 收藏 -
Go strings.Lines 返回一次性 iter.Seq[string],适合按行惰性遍历字符串。本文说明换行符归属、空字符串、连续换行和没有末尾换行的尾行处理,并比较它与 SplitAfter 的使用边界。187 收藏 -
Go slices.Grow 用来在批量追加前保证切片还有 n 个元素的容量空间。本文区分长度、容量和追加预算,说明为什么必须接住返回值,以及空切片、容量足够、负数参数和过大申请时的处理边界。366 收藏 -
Go 里可以用带缓冲 channel 做轻量 semaphore,把令牌容量当作 goroutine 并发上限,再用 defer 归还令牌避免提前返回造成泄漏。本文从批量任务小项目出发,整理阻塞获取、可取消获取和 WaitGroup 收尾的写法。402 收藏 -
ExecContext 返回成功并不等于一定改动了数据。本文用 Result.RowsAffected 区分执行失败、零行结果和驱动计数差异,给出更新与删除场景中的判断方式。449 收藏 -
Go 接入 HTTP/3 时,优先用 quic-go 的 http3.Transport 或 http3.Server;只有需要自定义 UDP、共享 socket 或多协议分流时,再接入 quic.Transport。199 收藏 -
Go 1.24+ 可以通过 http.Server.HTTP2 和 HTTP2Config.MaxConcurrentStreams 设置服务端 HTTP/2 并发流上限。本文区分每连接限制、全局请求并发和 Transport 的跨连接行为,给出配置与排查清单。130 收藏 -
Go fuzzing 可在回调入口用长度和字符规则筛选输入,再执行合法域性质断言。对比 return、Skip 和构造输入,并说明如何保留坏格式测试与控制成本。381 收藏 -
用 Go unsafe.StringData 读取字符串底层字节时,关键不是把 string 强行变成可写切片,而是保留原字符串所有者并封装只读访问。本文说明零拷贝视图的生命周期、空值和越界边界,以及哪些场景应该继续使用普通转换。350 收藏 -
Go map 可以在 range 遍历中删除已经判定过期的键,但新增键本轮是否出现没有保证。本文结合缓存清理场景说明直接删除、先收集再删除和延后新增的取舍。230 收藏