Go教程技术文章
-
Go 的 encoding/csv 支持把引号字段中的换行保留为同一条记录。本文说明正确的 CSV 写法、csv.Reader 的读取方式、字段数配置,以及如何用 ParseError、FieldPos 和 InputOffset 定位坏数据。434 收藏 -
用 Go regexp 的命名捕获组解析日志字段,按 SubexpNames 建立索引映射到结构体,并处理匹配失败、空组和重复组名。434 收藏 -
用 Go 的 io.MultiReader 把多个 Reader 顺序拼成一个输入流,掌握 EOF、错误传播、分隔符和底层资源关闭的边界。434 收藏 -
用 Go net/textproto 读取原始 HTTP 风格请求头,掌握 ReadMIMEHeader、重复字段、续行、键名规范化和输入长度边界。434 收藏 -
Go 1.26 起标准库提供 crypto/hpke,但 KEM、KDF、AEAD 不是可以任意拼接的三个下拉框。本文从兼容性、后量子迁移、硬件环境和应用用途出发,给出 DHKEM、ML-KEM、混合 KEM、HKDF、SHAKE、AES-GCM 与 ChaCha20-Poly1305 的选择思路,并用 Seal/Open 示例固定一套可复查的配置。434 收藏 -
Go io.LimitReader 适合放在任意 io.Reader 消费者前面建立字节上限。本文说明它与 io.ReadAll、io.Copy、JSON Decoder 的组合方式,并用 limit+1 读取区分正常 EOF、输入超限和底层错误。434 收藏 -
Go crypto/tls 在启动时加载多份证书,用 GetCertificate 按 SNI 精确选择并拒绝未知名称。示例说明回调调用条件、只读映射、兼容性及证书信任和业务鉴权的区别。434 收藏 -
Go net.JoinHostPort 用于把主机和端口拼成网络地址。本文说明它为什么会给 IPv6 主机自动加方括号,并覆盖域名、IPv4、空主机、zone 标识和 SplitHostPort 配合时的实用边界。434 收藏 -
Go crypto/x509 CertPool 可以把 PEM 格式的自定义根证书接入 TLS 客户端或证书链验证。本文区分空池与系统池、讲清 AppendCertsFromPEM 的返回值,并给出 RootCAs 与 VerifyOptions.Roots 的配置边界。434 收藏 -
自签名 CA 或内网证书接入 Go 客户端时,握手失败往往不是服务端证书坏了,而是根证书没有进入本次 Verify 使用的证书池。本文从系统根证书池、NewCertPool、AddCert 到 Verify 串起一条可运行的证书链校验路径。433 收藏 -
保存时用 goimports 自动整理当前 Go 文件,提交和 CI 再用 gofmt -l、goimports -l 做只读门禁。本文说明两者职责、保存脚本、检查命令、生成文件边界和常见失败原因。433 收藏 -
Go 的 csv.Reader 开启 ReuseRecord 后,Read 返回的记录可能共享底层数组。本文解释上一条记录被改写的原因,并给出即时处理、复制保存和 EOF 错误处理的安全写法。433 收藏 -
os.OpenFile 的 O_CREATE 只负责文件不存在时创建,不提供独占创建保证。并发生成同一文件时,应使用 O_CREATE|O_EXCL,并处理 os.ErrExist、部分写入和读取时机。433 收藏 -
Go http.Server 的优雅关闭超时不是 Server 的固定字段,而是传给 Shutdown 的 context 截止时间。本文用信号、5 秒预算和错误处理示例说明配置方式,以及 WebSocket 等劫持连接的边界。433 收藏 -
Go 1.20+ 的 bytes.CutPrefix 可以同时校验并移除二进制帧起始标记。本文给出版本、标志、长度和负载的完整解码写法,比较 HasPrefix、TrimPrefix,并说明多标记分派、空前缀与切片别名边界。433 收藏