Go语言技术文章
-
用 netip.ParseAddrPort 统一校验 host:port 输入,拆开 IPv4、IPv6 方括号、缺失端口和端口越界等边界,并给出可复用的 Go 代码。310 收藏 -
Golang · Go问答 | 6天前 | 标准库 · golang · HTTP · url · Go问答 · Go path net/url RawPath url.URL.JoinPath URL转义
Go 的 url.URL.JoinPath 会清理路径片段,但不会替你判断斜杠是分隔符还是数据。本文用 Path、RawPath 和 PathEscape 对比说明 URL 拼接与转义的边界。309 收藏 -
io.LimitedReader 用 N 限制读取量,但读满上限不等于底层输入结束。本文用剩余字节、EOF 与下一次读取拆开判断,给出处理固定长度帧和保留尾部数据的 Go 写法。363 收藏 -
Go 的 Header.Get 找不到请求头和找到空值时都可能返回空字符串。本文用 Header.Set、Header.Get、Header.Values 和 CanonicalMIMEHeaderKey 拆开这个边界,给出缺失判断、重复值读取与大小写处理的可运行写法。306 收藏 -
Golang · Go教程 | 6天前 | sync · WaitGroup · 并发编程 · Go教程 · 工程实践 · Go 并发任务 错误传播 sync.WaitGroup.Go WaitGroup.Add
Go 1.25 新增的 sync.WaitGroup.Go 能把启动任务、计数和收尾绑定在一起,但它不负责错误返回,也不能让任务函数 panic。本文从 Add 竞态与错误传播两个现场,给出可核对的写法和验收边界。458 收藏 -
Go 的 strings.Cut 会同时返回分隔符前后文本和 ok 标志,分隔符缺失时前半部分保留原字符串、后半部分为空。本文用配置解析和并发无关的最小示例,说明如何区分缺失、空字段与正常切分。125 收藏 -
Go 的 time.Time.Round 不只接收正数时长。本文用时间线示例拆开 Round、Truncate 和 Add 在负数 duration、半间隔与零值场景下的差异,给出可直接运行的判断代码。330 收藏 -
Go 服务读取 HTTP 响应时,io.ReadAll 会把内容一次性放进内存。本文用 io.LimitReader 和 http.MaxBytesReader 拆开客户端、服务端的上限策略,并说明如何区分截断与真实读取错误。220 收藏 -
用 Go 的 os.OpenFile 创建一次性文件时,O_CREATE 只负责允许创建,O_EXCL 才把已存在检查与创建绑定成一次原子操作。本文用并发示例拆开两种标志的边界,并给出可验证的错误处理方式。413 收藏 -
slices.Collect 能把 iter.Seq 变成切片,但空序列的结果、容量预估和重复遍历边界容易被忽略。本文用最小代码拆开收集过程,并给出选择容量策略的判断方法。236 收藏 -
Go 的 bytes.Buffer.AvailableBuffer 返回可借用的尾部空间,但它不是已经写入的数据。本文用最小程序说明 Bytes、AvailableBuffer、Write 与 Reset 的边界,避免把缓冲容量误当成有效长度。312 收藏 -
time.Duration.String 会自动选择合适单位,但负值、纳秒尾数和日志截断常让排查结果失真。本文用可复现实例说明 String 与 Truncate 的边界。110 收藏 -
Golang · Go教程 | 6天前 | 标准库 · golang · 性能优化 · bytes.Buffer · 切片边界 · Go bytes.Buffer 切片容量 AvailableBuffer 零分配
bytes.Buffer.AvailableBuffer 可以把格式化结果直接追加到缓冲区的可用容量中,但返回切片只适合紧接着传给同一个 Buffer 的 Write。本文用循环拼接日志的例子说明 Len、Cap、Available 与下一次写入之间的边界,以及什么时候不该保存这段切片。292 收藏 -
Golang · Go问答 | 6天前 | net/http · Go问答 · HTTP响应 · 连接控制 · Go FLUSH http.ResponseController Hijack ErrNotSupported
http.ResponseController 把 HTTP 响应刷新和连接劫持能力统一到一组探测方法中。本文用真实 Handler 场景拆开 Flush、Hijack 与 ErrNotSupported 的调用边界,说明什么时候应当回退,以及如何验证响应状态。430 收藏 -
Golang · Go问答 | 6天前 | 标准库 · golang · 排序 · Slices · Go 比较函数 slices.SortFunc slices.SortStableFunc 排序不稳定
slices.SortFunc 排序结果看似不稳定,通常不是算法随机,而是比较函数没有满足严格弱序,或调用方把等价元素的原顺序当成了保证。本文用订单优先级示例拆开 cmp 的返回值、重复元素处理和需要稳定排序的边界。223 收藏