Go教程技术文章
-
url.ParseQuery 返回错误时,Values 仍然包含已经成功解码的合法参数。本文用一个混合合法与非法编码的查询串,说明如何识别部分成功、如何在保留参数和拒绝请求之间做出明确选择。458 收藏 -
Golang · Go教程 | 1个月前 | 错误处理 · 数据库 · 事务处理 · Go教程 · 后端开发 · Go commit 事务 rollback database/sql sql.Tx BeginTx
Go database/sql 的事务关键在于把 BeginTx、事务内读写、Rollback 和 Commit 组织成清晰分支。本文用订单与库存场景说明 sql.Tx 的使用边界、提交失败处理、连接占用和落地检查。458 收藏 -
Go context.WithoutCancel 可以保留请求范围内的值,却不继承父上下文的取消信号。本文对比 Value、Done、Deadline、Err 和 Cause,并给出脱离请求后重新设置独立超时的写法。458 收藏 -
Go reflect.Value.FieldByIndex 接收 StructField.Index 这样的字段路径,可读取嵌套或匿名嵌入结构体中的目标字段;遇到可能为空的指针时,应使用 FieldByIndexErr 获取可处理的错误。458 收藏 -
Go filepath.Rel 只能在目标系统能够相对化的路径之间计算结果。本文解释 Windows 盘符与 UNC 共享根不一致时为什么报错,给出卷名预判、跨平台测试和迁移方案选择。458 收藏 -
使用 strings.Builder 构造长字符串时,先校验空输入,再按片段和分隔符的字节数估算容量并调用 Grow。本文用一个可复用示例说明错误返回、Len、Cap、Reset 与 Builder 生命周期边界。458 收藏 -
使用 bytes.Cut 解析首个分隔符时,关键不是看 before 或 after 是否为空,而是读取 found。本文用一组覆盖空字段、缺少分隔符、空输入和空分隔符的示例,说明如何保留错误边界并安全复用原始字节切片。458 收藏 -
Go 的 database/sql.QueryRowContext 不直接返回查询错误,真正的结果要从 Row.Scan 获取。本文用 sql.ErrNoRows 和 errors.Is 区分未找到、数据库失败与成功,并整理封装和边界处理。457 收藏 -
slog.WithGroup 应该承担稳定的命名空间,而不是替代字段命名。本文对比嵌套组、空组和自定义 Handler 的边界,给出避免 request_id、status 等属性冲突的设计方法。457 收藏 -
Go regexp 的关键不是把每次匹配都换成缓存,而是区分固定模式和动态模式:固定表达式用 MustCompile 在初始化阶段复用,动态表达式用 Compile 返回错误,并给缓存设置输入和容量边界。457 收藏 -
Go 1.27 的 bytes.CutLast 可以按最后一次分隔符拆分字节切片。本文说明它与 Cut、LastIndex 的区别、未找到和空分隔符边界,以及返回原切片视图时何时需要 Clone。457 收藏 -
Go encoding/json/v2 的 UnmarshalRead 面向单个顶层 JSON 值,不能直接当作多值流循环入口。本文用 jsontext.Decoder 与 UnmarshalDecode 逐个读取 Reader 中的 JSON 对象,并说明 io.EOF、数组封装和错误边界。457 收藏 -
Go gob 接口字段需要注册实际承载的具体类型。本文用完整消息往返示例说明两端注册、类型断言与名称冲突的排查方式。457 收藏 -
讲清 Go encoding/xml Encoder.Indent 的 prefix 与 indent 参数,演示结构体和 token 编码的可读 XML 输出,并说明 Flush、MarshalIndent 与混合文本边界。457 收藏 -
Go 的 opentype.NewFace 通过 FaceOptions.DPI 设置字体栅格化所用的每英寸点数。本文用一个最小示例说明 DPI、Size、Metrics 与绘制坐标的关系。457 收藏