Go语言技术文章
-
Go runtime/metrics.Read 支持把指标名称放入可复用的 Sample 切片中批量读取。本文从定时采集场景出发,说明如何准备固定容器、按 ValueKind 取值、处理 KindBad,并在并发采集时隔离底层数组,减少不必要的采集分配。167 收藏 -
Go 自定义类型实现 encoding.TextMarshaler 与 encoding.TextUnmarshaler 后,可以在文本编码边界复用同一套格式约定。本文用一个可读的标识类型说明方法签名、错误处理、JSON 发现规则和兼容测试。167 收藏 -
围绕 Go tls.Config.VerifyConnection 说明握手回调顺序、ConnectionState 观测、恢复会话与自定义证书校验的边界,给出可落地的记录和错误返回方案。167 收藏 -
把Go磁盘目录适配为fs.FS,用完整资源读取程序说明系统根路径、组件名称、工作目录、错误分类与符号链接边界。167 收藏 -
区分 Ants Release 关闭池与业务任务完成,通过完整 WaitGroup 批处理示例处理提交失败计数,并说明停止生产者、超时等待、任务取消和业务成功的不同含义。167 收藏 -
Go net.Resolver.PreferGo 改变域名解析结果时,先区分 Go 内置解析器与系统解析器,再检查 DNS 配置、A/AAAA 部分结果和 context 超时,避免把解析路径差异误判成 DNS 故障。166 收藏 -
Go 的 math/bits 不会自动改变变量类型,但可以测出数值需要的有效位数,帮助你在 uint8、uint16、uint32 和 uint64 之间安全选择并检查溢出边界。166 收藏 -
Golang · Go教程 | 3星期前 | Go教程 · HTTP客户端 · 后端开发 · io.ReadAll io.LimitReader Go HTTP客户端 Go LimitedReader 响应体大小限制
Go HTTP 客户端面对未知或不可信响应体时,不应直接无界 io.ReadAll。本文用 io.LimitReader(max+1) 与一个哨兵字节准确识别超限,说明 Content-Length 预检、压缩响应、读取错误、Body.Close、连接复用及 httptest 边界测试。166 收藏 -
Go sync.Mutex.TryLock 返回 false 代表没有获得锁,不代表锁已经解锁。本文用最小代码说明成功分支的 defer Unlock、失败分支的直接返回,以及 TryLock 的兼容与使用边界。166 收藏 -
Go 中 errors.As 取不到自定义错误字段,通常不是字段不存在,而是目标类型、指针层级或错误链没有对上。本文从故障现场拆开直接返回、%w 包装、值与指针接收者和 Unwrap 的边界,给出可复查的修复清单。166 收藏 -
Go json.Decoder 字段为空时,先看错误,再检查导出字段、JSON标签、大小写、嵌套层级、目标指针和输入流。区分缺失、null与空字符串,并说明严格模式的兼容取舍。166 收藏 -
Go work 没有使用本地模块,通常不是本地代码没有更新,而是工作区没有被当前命令发现、use 没指向含 go.mod 的模块根目录、导入路径与 module path 不一致,或 GOWORK=off 关闭了工作区。本文按排查顺序给出修复方法。166 收藏 -
Go 切片截取后可能仍保留过大的 capacity。本文用 slices.Clip 收紧容量边界,并解释它与复制、三索引切片和后续 append 的区别。166 收藏 -
Go 的 http.Cookie.Valid 会在写出 Cookie 前检查名称、值、过期时间、路径、域名以及 Partitioned 与 Secure 的组合约束。本文用可执行示例说明如何读取具体错误、避免 String 的静默降级,并划清 Valid 与浏览器策略的边界。166 收藏 -
Go 源码分析中,ast.Ident 只有语法名字,不能直接说明它代表变量、函数还是类型。本文用 go/types.Info.ObjectOf 统一查询标识符对象,并解释 Defs、Uses、nil、嵌入字段与 TypeOf 的边界。166 收藏