Go教程技术文章
-
Go 1.24 的 runtime.AddCleanup 可以为对象注册异步清理回调。本文从资源包装场景出发,说明参数关系、回调触发条件、KeepAlive、Cleanup.Stop 以及显式 Close 的边界。304 收藏 -
Go 1.23 引入的 unique.Make 可以把可比较值规范化为 Handle。本文从最小写法、map 去重、类型约束和生命周期四个方面说明如何正确复用唯一实例。329 收藏 -
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 收藏