Go教程技术文章
-
Golang · Go教程 | 3天前 | 标准库 · 签名 · Go教程 · 密码学 · 接口兼容 · Go Go 1.25 crypto.MessageSigner SignMessage 签名器
Go 1.25 在 crypto 包中增加 MessageSigner 接口与 SignMessage 函数,用于兼容由签名器自行哈希消息和传统 Sign 方法。本文通过真实回退路径说明接口判断、哈希边界与错误处理。453 收藏 -
Golang · Go教程 | 3天前 | goroutine · pprof · 性能分析 · Go教程 · 运行时 · Go label runtime/pprof Do ForLabels goroutine 归因
线上 CPU profile 只能告诉你哪里忙,却不一定能说明是哪类任务在忙。本文用 runtime/pprof 的 Label、Do、ForLabels 和 SetGoroutineLabels 给请求打上可检索的任务标签,并说明标签继承、覆盖、读取和采样查看的边界。447 收藏 -
Golang · Go教程 | 3天前 | 网络编程 · IPv6 · Go教程 · 代码质量 · go vet · IPv6 net.Dial Go 1.25 go vet hostport net.JoinHostPort
Go 1.25 的 go vet 新增 hostport 分析器,可以发现用 fmt.Sprintf 拼接 host 和 port 后传给 net.Dial 的 IPv6 地址错误。本文从错误现场出发,改用 net.JoinHostPort,并用 vet 与运行测试核对修复结果。284 收藏 -
用 Go 1.25 的 iter.Seq 封装一条可提前停止的流式校验链,说明 yield 返回值、错误回传和单次迭代边界,避免先收集切片再重复扫描。387 收藏 -
Go 的 testing.T.Context 返回一个会在清理函数执行前取消的上下文。把它传给数据库、HTTP 或后台 goroutine,可以让测试超时和资源清理形成可观察的闭环。本文用一个可运行的测试示例说明取消链、Cleanup 顺序和失败定位边界。294 收藏 -
Go 1.25 中可以用 runtime/debug.SetCrashOutput 把未处理 panic 和致命错误追加写入单独文件。本文用一个可运行的崩溃留证流程,说明文件轮转、监控进程接收和恢复边界。216 收藏 -
Go 1.25 让 Linux 容器中的默认 GOMAXPROCS 感知 cgroup CPU 配额,并提供 runtime.SetDefaultGOMAXPROCS 重新启用默认值。本文从升级风险、代码改动和验收证据三方面给出迁移清单。394 收藏 -
把多项错误拼成字符串会丢掉可判断的错误链。本文以校验、写盘和关闭资源为例,演示如何迁移到 errors.Join,保留 errors.Is 判断能力,并处理 nil、重复错误与 errors.Unwrap 的边界。316 收藏 -
encoding/hex.AppendEncode 适合把字节编码结果追加到已有缓冲区。本文用 EncodedLen 判断容量,拆开 dst[:0] 复用、尾部追加和切片边界,避免预留不足或误把编码结果当原始字节。456 收藏 -
Go 中 bytes.Buffer 适合逐步写入并把内容交给下游读取,bytes.Reader 适合只读字节切片、定位游标和重复读取。本文用一个小实验拆开两者的状态变化与选择边界。279 收藏 -
Go 的 encoding/binary.NativeEndian 适合读取本机格式,但不应直接替代协议字节序。本文用一个二进制记录示例拆开 NativeEndian、unsafe 转换和跨机器可移植编码的边界。267 收藏 -
处理 multipart/form-data 时,不必把上传文件全部读入内存。本文用 NextPart 与 NextRawPart 展示如何按字段读取、跳过文件内容,并说明文件名解码和边界错误的判断方法。210 收藏 -
Go 1.23 为 math/rand/v2.ChaCha8 增加了 Read 方法,适合从独立的确定性随机源批量取字节。本文从 NewChaCha8、Read、Uint64 交错调用和 Seed 重置入手,排查为什么同一道测试会出现不同字节序列,并给出并发隔离的写法。122 收藏 -
用 net/http/httptrace 把一次 Go HTTP 请求拆成 DNS、连接、TLS、写请求和首字节等阶段,判断慢点究竟发生在哪里。372 收藏 -
Golang · Go教程 | 3天前 | sync · golang · 文件操作 · Close · os.File · 错误处理 数据持久化 文件落盘 Go os.File.Sync Go Close
Go 文件写入后为什么还要区分 Sync 和 Close?本文从 Write、Sync、Close 的调用链出发,说明落盘确认、defer 顺序与错误返回值该怎么处理。168 收藏