Go教程技术文章
-
Go strconv.AppendQuote 会把字符串字面量直接追加到 []byte 缓冲区。本文说明如何复用 dst、处理转义膨胀,并判断容量不足时仍可能发生的扩容。187 收藏 -
讲解 JSON Pointer 对斜杠及波浪线的编码,通过完整 Go JSONPatch 示例区分单个成员和嵌套路径,并说明逐段构造、JSON 字符串编码与补丁错误处理。187 收藏 -
Go sort.Find 用二分查找返回有序数据中第一个满足比较条件的位置,并通过 found 区分是否精确命中。本文从三态比较函数、重复值、未找到边界和结构体切片几个场景说明怎样写对。187 收藏 -
在 Go 的 io/fs 接口前判断路径是否合规,重点说明 ValidPath 对 slash 分隔、未根路径、点段、空元素和根目录 . 的边界,并给出可直接复用的入口函数。187 收藏 -
Go TypeAndValue.Addressable 可识别表达式的可寻址属性。本文用变量、切片索引和 map 索引示例说明 Types 的读取方法,并区分可赋值、复合字面量例外及运行时安全。187 收藏 -
Go genetlink 不需要手写 Generic Netlink 家族编号。先用 genetlink.Dial 建立连接,再调用 GetFamily 按名称查询 Family,读取 Family.ID;本文同时说明错误判断、版本字段与 Execute 的衔接方式。186 收藏 -
Go image/jpeg 的 Options.Quality 取值范围是 1 到 100,默认值为 75。本文按缩略图、网页上传和归档等用途给出质量参数的选择起点,并说明 Encode 的传参、体积与细节的权衡,以及 PNG、透明图和反复编辑场景的边界。186 收藏 -
Go strings.Cut 处理可选字段时,关键是同时保留 before、after 和 found:字段不存在与字段存在但值为空不能混为一谈。本文用首个键值分隔符的解析例子说明返回值、空分隔符、可选字段结构,以及 Cut 与 SplitN、CutPrefix、CutSuffix 的边界。186 收藏 -
Go 多生产者流水线中,关闭通道的关键是先划分发送责任,再用 WaitGroup 等待全部发送者退出,由协调者关闭共享输出,并用 context 处理下游提前结束。186 收藏 -
Go 文件操作失败时,不要比较错误字符串。本文用 errors.Is 配合 fs.ErrNotExist 和 fs.ErrPermission 区分文件不存在、权限拒绝及其它错误,并保留 PathError 上下文。185 收藏 -
Go io.Pipe 的读写端是同步边界;本文用 CloseWithError 把生产错误传给消费者,并区分 EOF、业务错误与提前关闭,避免 goroutine 泄漏。185 收藏 -
Go 1.23 起使用 net.Dialer.KeepAliveConfig 明确设置 TCP 保活开关、空闲时间、探测间隔和未应答次数,并说明旧字段与平台差异。185 收藏 -
errors.Join 传入一个非 nil 错误时仍会返回包装错误。本文用最小示例区分 ==、errors.Is 与 Unwrap() []error,并给出单错误和多错误场景的返回策略。185 收藏 -
maps.Clone 返回新的浅拷贝,不能把已有 map 当作写入目标。若要反复刷新同一容器,应按需求使用 maps.Copy,要求精确替换时先 clear 再 Copy,并注意 slice、指针等 value 仍是浅拷贝。185 收藏 -
Go testing.T.Setenv 会在测试清理阶段恢复环境变量。本文说明父子测试的设置层级、串行子测试的隔离写法,以及 t.Parallel 与进程级环境变量的冲突边界。184 收藏