Go语言技术文章
-
Go 服务需要持续观察 goroutine 数量、调度队列和等待延迟时,可以使用标准库 runtime/metrics,而不必依赖 pprof。本文从 All 和 Read 的采样入口讲到 Value.Kind、计数值与直方图处理,并说明两者在生产观测中的分工。214 收藏 -
maps.Clone 会新建顶层 map,但只对键和值做普通赋值;当值是 slice、嵌套 map、指针或包含引用的结构体时,内部状态仍可能共享。本文用对照代码说明影响范围,并给出逐层复制的写法。214 收藏 -
代码生成器不要手工维护缩进和导入顺序:先输出完整且合法的 Go 文件,再用固定版本 gofmt 统一空白,用 gofmt -d 检查生成结果是否稳定。214 收藏 -
Go slices.BinarySearchFunc 遇到重复比较键时返回等价区间最左索引;本文说明 found、插入点、比较器和继续扫描全部重复项的边界。214 收藏 -
Go tls.Config可以并发复用,但传给TLS函数后不得继续修改。本文说明只读快照、Clone浅复制、可变切片隔离和证书配置热切换的安全组织方式。214 收藏 -
Go flag.Func 可以把字符串解析、业务校验和错误返回集中在回调中。本文用环境参数示例说明先校验后赋值、FlagSet 错误策略、重复参数行为和表驱动测试。214 收藏 -
Go 1.21 引入的 clear 可以把切片元素重置为类型零值,尤其适合切断指针切片和含引用字段的对象链。本文从数组范围、别名切片和旧工具链兼容三个边界说明它怎么用、哪里容易清错。213 收藏 -
用 Go 的 io.CopyN 处理固定长度读取时,区分完整复制、短读 EOF 与底层读取错误,并给出可验证的判断代码。213 收藏 -
Go 1.23 引入的 reflect.Value.Seq2 可以把数组、map、切片或字符串暴露成键值迭代器。本文用可运行示例说明 Value 回调、Interface 类型断言、yield 返回 false 提前停止,以及不支持 Kind 时的边界。213 收藏 -
Go 切片只是底层数组的一段描述符,直接返回大缓冲区中的小片段时,指针仍可能让整个数组保持存活。本文用切片长度、容量和复制副本说明保留原因,并给出 make+copy、append 复制和指针元素清理的实用边界。213 收藏 -
GOPROXY=direct 只负责让 Go 直接访问版本控制系统,私有模块的认证仍要交给 Git 的 HTTPS 凭据助手或 SSH;本文用一条请求链路说明如何配置和排查。213 收藏 -
Go 截取子切片后修改元素会影响原切片,根因是两个切片共享底层数组。本文用 len、cap、三下标切片、append、slices.Clone 和 copy 说明如何判断并隔离这类修改。213 收藏 -
errors.As 不只匹配具体错误类型,也能匹配错误链中实现某个接口的错误。声明接口变量并把其地址传入 errors.As,即可按能力处理不同实现,同时保留多层包装上下文。213 收藏 -
Go 验证 HMAC 时应先用同一密钥和同一原始消息重算标签,再把对方标签解码为字节,最后交给 hmac.Equal 做恒定时间比较。本文给出函数与 Webhook 示例。213 收藏 -
Golang · Go教程 | 1个月前 | 网络编程 · go · net/http · 兼容性 · Go http/2 HTTP/1 http.Protocols SetHTTP1 SetHTTP2 ALPN
Go 1.24 的 http.Protocols 让 Server 和 Transport 能显式声明 HTTP/1、TLS 上的 HTTP/2 以及明文 HTTP/2。本文从一个需要固定协议的服务场景出发,拆解 SetHTTP1、SetHTTP2 的配置位置、ALPN 边界和兼容检查。212 收藏