Go语言技术文章
-
用 Go io/fs.Sub 把一个目录裁成受限文件树,配合 fs.ValidPath 和 fs.Open 处理路径边界、目录遍历与失败回退。284 收藏 -
FindAllStringSubmatchIndex 返回 UTF-8 字节下标。本文用 Go 将完整匹配和子表达式转换为 rune 区间,并处理可选分组的 -1 与字素簇边界。284 收藏 -
围绕 Go testing.B.RunParallel 说明 b.N、GOMAXPROCS、SetParallelism 与墙上时间的关系,给出在并行基准结束后用 b.N 除以 b.Elapsed 估算 ops/s 的写法,并梳理 CPU、锁和外部依赖造成的吞吐边界。284 收藏 -
Go 的 multipart.Writer 设置自定义 boundary 时,必须在创建第一个 Part 前完成。本文解释调用顺序、请求头一致性、参数限制与排查清单。284 收藏 -
errors.Join 会先丢弃 nil,并统计剩余错误;当非 nil 数量为零时直接返回 nil。文章结合结果矩阵、标准库源码、错误树检查和 typed nil 边界说明这一设计。284 收藏 -
Go 反射处理结构体元数据时,可以用 reflect.Type.Fields 按声明顺序遍历 StructField,再通过 Tag.Lookup 读取标签;需要同时拿到字段值时使用 reflect.Value.Fields。本文从字段扫描、标签校验到嵌套结构体边界给出可运行示例。283 收藏 -
使用 Go 的 httputil.ReverseProxy 和 Rewrite,把公网 /api 请求安全映射到后端 /internal 基路径,同时处理查询参数、转发头和后端错误。283 收藏 -
errors.Is 匹配不到自定义包装错误,通常不是错误文本的问题,而是 %w 包装链、Unwrap 关系、自定义 Is 方法集或值指针形态出了偏差。本文用对照代码和测试拆开三类失败。283 收藏 -
Go 程序明明访问 HTTPS,结果却一直使用 HTTP/1.1,排查时不要只盯着 ForceAttemptHTTP2。本文按客户端声明、TLS 握手选择和 HTTP 实际协议三个层次,说明应记录的字段、常见冲突以及最小复现代码。283 收藏 -
Go 测试断言抽成辅助函数后,t.Helper 如何让失败行号回到测试调用点,以及多层断言包装该怎样逐层标记。283 收藏 -
Go bufio.Reader.ReadSlice 遇到 ErrBufferFull 并不代表长行结束。本文用原创 Go 示例说明如何及时复制片段、循环 append,并正确处理分隔符、EOF 与其他错误。283 收藏 -
Go bytes.CutPrefix 可以把可选协议前缀解析成 after 与 found 两个明确结果。本文用协议帧示例说明前缀命中、旧格式兼容、空字段校验和 bytes.Clone 的生命周期边界。283 收藏 -
讲清 Go fs.WalkDir 中 SkipDir 与 SkipAll 的区别:目录剪枝、普通文件上的特殊语义、全局提前结束、普通错误和上下文取消的正确处理方式。283 收藏 -
用 Go execution trace 观察 goroutine 的阻塞区域,掌握 trace 文件采集、task/region 标记、go tool trace 阅读和 pprof 导出方法。283 收藏 -
netip.Addr 本身就是不可变且可比较的值类型。本文从字符串解析、IPv4-mapped IPv6 规范化、zone、零值和端口边界出发,给出把 IP 地址安全放入 Go map 的实现方式。283 收藏