Go教程技术文章
-
用 Go log/slog 的 slog.Group 和 Logger.WithGroup 把请求、订单等字段放进稳定命名空间,并理解 TextHandler 与 JSONHandler 的输出差异。367 收藏 -
用 sync.Once、完成通道和 AfterFunc 的 stop 函数组合,解决取消回调与主动关闭并发时的重复清理、提前返回和竞态问题。367 收藏 -
本文说明 Go ed25519.Options 如何启用 Ed25519ph,重点讲清 SHA-512 摘要输入、Hash 与 Context 的配置,以及 PrivateKey.Sign 和 VerifyWithOptions 的互操作边界。367 收藏 -
用一个最小 Go 项目演示如何通过 //go:embed 把模板编译进 embed.FS,再用 ReadFile 读取、template.Parse 解析并执行,补充路径规则、错误处理、ParseFS 取舍与测试方法。367 收藏 -
fs.Sub 可以把已有 FS 映射成以某个子目录为根的视图,嵌套调用时每一层路径都相对当前子 FS 解析。本文拆开根目录变化、符号链接风险与 os.Root 的安全边界,给出可复查的组合方式。367 收藏 -
Go crypto/tls 用 tls.Config.NextProtos 声明客户端的 ALPN 协议偏好,并在握手完成后从 ConnectionState.NegotiatedProtocol 读取最终结果。本文说明成功协商、未协商与无共同协议的处理边界。367 收藏 -
说明 go mod edit -fmt 如何只整理 go.mod 的文本格式,区分 -print、-json、go get 与 go mod tidy 的职责,避免把排版命令当成依赖维护命令。367 收藏 -
Go regexp 的 LiteralPrefix 会返回任何匹配必须以其开头的字面量前缀,以及该前缀是否已经覆盖整个正则。本文用几个模式说明如何读取这两个返回值、做候选预筛选,并避开把前缀误当成完整匹配的常见误区。367 收藏 -
Go x/text/secure/precis OpaqueString 可以在保留大小写的前提下准备国际化口令文本。本文说明 String 的使用、NFC 规范化、空结果处理,以及准备后再哈希的落地顺序。367 收藏 -
Go compress/gzip 的 Write 不代表压缩流已经完成,必须调用 Writer.Close 刷新未写数据并写入 GZIP 尾部。本文说明 gzip.Writer 与底层 io.Writer 的关闭责任、defer 顺序、Close 错误处理,以及 Flush 和 Reset 的适用边界。367 收藏 -
Go 1.26 允许 new(expr) 直接从表达式推断指针类型。本文用切片和映射对比旧写法,说明零值、可写性、类型推断和迁移检查边界。366 收藏 -
用 slices.BinarySearchFunc 在按字段排序的 Go 结构体切片中查找记录,说明比较器契约、未命中的插入点、重复字段和更新后的维护方式。366 收藏 -
Go regexp.Longest 会修改 Regexp 实例的匹配策略,不能与其他方法并发调用。本文说明如何在启动阶段完成配置,让多个 goroutine 安全复用共享正则,并隔离不同匹配策略。366 收藏 -
讲清 Go strings.CutPrefix 的 after 与 found 返回值,处理可选协议前缀、空前缀、重复前缀和大小写边界,并给出旧版 Go 的兼容写法。366 收藏 -
用 Go httptest.NewRequest 构造带指定 Host 的服务端请求,区分绝对 URL、Request.Host 与 Header 中 Host 的边界,并给出 handler 测试中的断言写法和常见陷阱。366 收藏