Go教程技术文章
-
Go 里 crypto/sha256.New 和 sha256.Sum256 都能计算 SHA-256,但适用场景不同:一次性 []byte 直接用 Sum256,文件、网络流和分块数据用 New。本文用代码、返回类型和边界清单说明如何选择。247 收藏 -
用 Go io/fs 的 fs.FS 与 fs.WalkDir 统一遍历磁盘目录、嵌入资源和测试文件系统,掌握 slash 路径、DirEntry、错误处理、符号链接与 fs.Sub 的边界。247 收藏 -
用 Go 的 slices.CompactFunc 按结构体字段处理相邻重复数据,说明比较函数如何定义、为什么只保留连续数据中的第一条,以及就地修改和返回值的使用边界。245 收藏 -
testing.T.Helper 不会修复断言失败,它只让 Go 测试输出跳过辅助函数并指向调用处。本文从调用顺序、嵌套 helper、顶层测试函数和 goroutine 边界入手,给出排查失败位置仍指向 helper 文件的最小检查清单。244 收藏 -
reflect.StructOf 遇到重复字段名会直接 panic。本文从字段去重、参数边界、局部 recover 和表驱动测试四个方面,给出可诊断的动态结构构造方式。243 收藏 -
Go 中排查 unicode/utf8 非法序列时,先用 Valid 判断整体字节,再用 RuneError 与 size=1 定位具体偏移,并区分截断、错误编码和真实替换字符。243 收藏 -
Go testing.T.Cleanup 回调 panic 不会被静默忽略。本文说明清理时机、后进先出顺序、测试主体 panic 与 cleanup panic 的区别,并给出用 t.Errorf、局部 recover 和 go test 排查重复清理与并发边界的写法。239 收藏 -
解释 Go http.Request.Clone 为什么不能让多个请求重复读取同一份 Body,并给出受限缓存、独立 Reader 和 GetBody 重试方案。237 收藏 -
Go strings.Builder 的 String 方法返回当前累计内容,后续 Write 是继续修改 Builder,而不是直接修改已经得到的 string。文章解释 Builder 缓冲区与字符串值的边界,并给出单一所有者、禁止复制非零 Builder、并发隔离和按需 strings.Clone 的处理方式。236 收藏 -
通过 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 收藏 -
Go archive/zip 读取 ZIP 清单时,可以先访问 Reader.File 和 FileHeader,只拿名称、大小、压缩方式等中央目录信息;确认需要正文后再调用 File.Open。231 收藏 -
Golang · Go教程 | 2天前 | go · https · Go crypto/tls按ServerName选择证书 tls.Config.GetCertificate ClientHelloInfo.ServerName Go SNI证书 Go多域名HTTPS
围绕 Go crypto/tls 的 ClientHelloInfo.ServerName,说明如何在 GetCertificate 中按 SNI 选择 tls.Certificate,处理未知域名、无 SNI 的默认回退,并区分 GetConfigForClient 的适用边界。230 收藏