Go教程技术文章
-
Go slog 的 AddSource 能把日志调用点写进 source 字段,排查并发服务时很有用,但每条日志都要承担调用点定位和格式化成本。本文用可验证的基准与生产开关说明它的代价、适用范围和安全切换方式。192 收藏 -
Go 的 O_APPEND 只把每次写入的起点交给内核保证,不等于整条日志天然不可交错,也不替日志轮转解决文件描述符和重命名边界。文章用可运行示例拆开偏移、并发写入和轮转后的处理方式。192 收藏 -
Go 访问内网 HTTPS 服务时,用 x509.CertPool 加载自签名 CA 并注入 tls.Config.RootCAs,保留证书链与主机名校验。192 收藏 -
Go testing.T.Helper 只改变测试失败日志的调用层级,不改变断言结果或控制流。本文用多层断言和子测试示例说明应该在哪里标记,以及常见误区。192 收藏 -
Go encoding/json 的 omitempty 不是‘所有零值都隐藏’:本文按 bool、数字、字符串、切片、映射、数组、指针和结构体拆解省略边界,并给出可选 API 字段的建模与测试方法。192 收藏 -
os.CopyFS 适合把一棵目录树复制到目标目录,但符号链接、目标已存在和中途失败会改变结果。本文用可运行示例拆开复制边界、错误判断和失败后的清理策略,帮助你避免把链接误当成普通文件。191 收藏 -
net/textproto 的 ReadMIMEHeader 没有公开的大小参数。本文区分自定义文本协议与 HTTP 服务端两种场景,分别用受限 reader 和 Server.MaxHeaderBytes 控制头部边界,并说明超时、头部值数量和请求体限制的区别。191 收藏 -
用 Go 标准库 net/netip 解析 CIDR 网段,区分掩码规范化与原始配置,演示 Prefix.Contains 的边界判断,并给出配置文件校验和错误处理方式。190 收藏 -
Go 里用 sort.SliceStable 按多个字段排序时,比较器要按优先级逐层比较,所有字段相等则返回 false,稳定性才能保留原始顺序。190 收藏 -
context.WithoutCancel 适合让收尾任务忽略上游取消,但它不会自动提供超时、Done 或可用的 Deadline。本文用请求日志落盘和资源清理场景拆开它的边界,并给出可复现的回收与超时写法。189 收藏 -
govulncheck 的结果不只是在说依赖版本旧,还在说明漏洞符号是否能从项目入口被调用。本文按导入、符号和测试范围拆分扫描,帮助你判断哪些结果需要立即升级。189 收藏 -
用 Go archive/tar 解压时,先按 Header 区分目录、普通文件和链接,再把普通文件复制到安全目标路径,避免目录误写和归档路径越界。189 收藏 -
通过 Go encoding/xml 的 UnmarshalXML 将旧字段名、属性和文本金额映射到领域结构,并用 DecodeElement 控制单元素消费与错误边界。189 收藏 -
Go encoding/csv Reader 的 FieldsPerRecord 设为 -1 后可以读取列数不同的合法 CSV,再由业务层校验必需字段、最大列数和异常记录。189 收藏 -
Go 拼接文本时,strings.Builder、bytes.Buffer、[]byte 和 strings.Join 的选择取决于输出类型、是否需要读取字节以及片段是否已准备好。文章用最小示例、边界表和基准测试说明各自适用场景。188 收藏