Go语言技术文章
-
只读构建环境中,-mod=vendor 才是强制使用 vendor 的开关;-mod=readonly 只是不允许修改 go.mod。本文区分三种模式、GOPROXY=off 与 vendor/modules.txt 一致性,并给出适合 CI 的固定配置。177 收藏 -
用 Go strings.CutPrefix 读取并移除字符串前缀,掌握 after、found 两个返回值,以及未匹配、空前缀、大小写和 Unicode 等边界。177 收藏 -
用 Go utf8.DecodeRune 扫描原始字节时,RuneError 只有配合 size==1 才能判断非法编码,并通过字节游标准确定位原始偏移。177 收藏 -
介绍 Go net/netip.ParseAddrPort 如何解析 IPv4、IPv6 和数字端口,说明 AddrPort 的字段读取、方括号规则、端口 0 与常见错误处理。177 收藏 -
用一个可复用的 zlib.ReadCloser 依次解压多个独立数据块,讲清 Reset、ReadAll、字典、错误处理和 Close 的边界。177 收藏 -
本文设计一个安全的 Go 反射字段赋值 API:从多层指针入口定位可设置结构体,按策略初始化 nil 中间节点,并以严格的类型兼容和稳定错误替代 reflect panic。177 收藏 -
EnableFullDuplex 主要改变 Go HTTP/1 服务端的请求体消费时机,HTTP/2 默认已经支持读写并行。本文用协议边界、包装器错误和完整示例说明正确用法。177 收藏 -
Go 1.27 支持具体类型的泛型方法,但泛型方法仍不能直接满足普通接口方法。本文从方法签名、方法集、接收者和约束位置排查,并给出泛型类型、顶层函数与适配器三种修复方案。177 收藏 -
用 Go runtime/trace 采集一次请求的短时执行轨迹,结合 task、region 和 go tool trace 观察 goroutine 调度、阻塞、系统调用与 GC 事件。176 收藏 -
Go 的 LookupHost 与 Resolver.LookupIP 都能查域名地址,但前者返回字符串且不接收地址族参数,后者通过 ip、ip4、ip6 显式筛选并返回 []IP。本文用同一组调用拆开结果差异、解析器环境和生产选型。176 收藏 -
解释 Go io.SectionReader.Size 为什么固定返回 section 长度,并区分它与 Read、Seek 改变的当前偏移,给出顺序读取、随机读取和边界判断的实用写法。176 收藏 -
Go html/template 会按 HTML、URL 和 JavaScript 上下文自动转义,动态属性出现 #ZgotmplZ 往往是安全保护而非模板损坏。本文用最小示例说明如何定位上下文、改用数据驱动和控制可信类型边界。176 收藏 -
解释 Go httptest.NewTLSServer 与默认 Transport 的证书信任差异,给出使用 ts.Client() 以及克隆测试 Transport 的正确写法。175 收藏 -
Go archive/zip 读取 Zip 文件时,要分别关闭 OpenReader 返回的归档句柄和 File.Open 返回的条目流。本文用单条目函数、io.Copy 和关闭边界表说明提前返回、循环 defer、NewReader 与底层 ReaderAt 的资源责任。175 收藏 -
Go context取消后下游循环仍运行,通常是阻塞调用、channel边界或context传递链没有覆盖。本文按检查清单定位取消信号、补齐退出分支,并区分协作式取消与等待goroutine结束的边界。175 收藏