Go教程技术文章
-
Go 本地 HTTPS 测试需要自签名证书时,可以用 crypto/x509.CreateCertificate 直接生成带 localhost SAN 的证书。本文比较三种方案,并拆解模板、签名者、DER 与 PEM 的关系。233 收藏 -
Go 1.21 引入 maps 包后,配置映射可以用 maps.Equal 比较键值对;本文说明基本用法、nil 与空 map 边界,以及值为切片时如何改用 maps.EqualFunc。233 收藏 -
Go errors.Join 可以把多个非 nil 错误组合成一个可继续用 errors.Is 和 errors.As 检查的错误树。本文解释为什么全 nil 输入会得到 nil、多个错误的文本为何换行,以及如何在批量处理里保留每个底层错误。233 收藏 -
Go crypto/rand.Reader 的类型是 io.Reader,固定长度随机字节不能假设一次 Read 填满缓冲区。本文用 io.ReadFull 处理短读,并解释 n、EOF 与错误的判断边界。232 收藏 -
通过 Go testing.T.Cleanup 的资源夹具示例,说明同一个测试对象为何按后注册先执行,并梳理父子测试、失败路径与并行测试的清理边界。232 收藏 -
Go url.JoinPath 适合拼接已经转义的 URL 路径元素,但不会替业务判断用户权限。本文说明如何限制用户值为单一路径段,并处理函数版、方法版、路径清理和 %2F 边界。232 收藏 -
io.LimitReader 达到上限后也会返回 EOF,无法单独证明输入是否超长。本文用 limit+1 探测窗口区分自然结束、超长截断和底层读取错误,并给出可复用的 Go 封装。232 收藏 -
围绕 Go net/http Client 讲清 Transport 复用、Response Body 关闭、读到 EOF、状态码判断和异常场景检查清单,给出可复用的请求封装方案。232 收藏 -
从父 Context 的 Deadline 读取剩余时间,先预留收尾余量,再用比例与最大值计算子任务超时。本文给出可复用的预算函数,并说明无截止时间、预算耗尽和并发子任务的处理边界。232 收藏 -
Go fuzzing 不可重复,通常不是随机输入本身的问题,而是 fuzz target 读了真实时间、共享状态或不可控外部依赖。本文用依赖接口、Fake 实现、固定种子和失败语料目录,整理出可重复运行的 Go 模糊测试结构。232 收藏 -
Go 反射通过 FieldByName 读取同名嵌入字段时,多个路径无法唯一消歧会返回无效 Value。本文演示如何检查 IsValid、改用 FieldByIndex,并处理 nil 嵌入指针。232 收藏 -
Go crypto/x509.ParsePKIXPublicKey 面对的是 PKIX SubjectPublicKeyInfo 公钥数据。本文从 PUBLIC KEY PEM 输入出发,说明如何解码、解析并用类型分支识别 RSA、ECDSA、Ed25519、ML-DSA 与 X25519 公钥,顺带厘清它和完整证书、PKCS#1 公钥的边界。232 收藏 -
用 github.com/pkg/sftp 区分单文件请求上限、文件任务池和读写方向,并用 ReadFromWithConcurrency 精确控制一次传输的并发度。232 收藏 -
把配置中的超时统一写成 500ms、2s 这类带单位字符串,在 Go 程序入口解析为 time.Duration,再复用于 context、HTTP 客户端和定时任务,避免裸整数造成单位误读。232 收藏 -
用一个可复用的 Go 最小示例说明 errors.Join 如何同时保留多个底层错误,解释 nil 处理、错误树检索、errors.Is/As 的选择,以及不要误用 errors.Unwrap 的边界。232 收藏