Go教程技术文章
-
Go context.AfterFunc 适合绑定超时、上游取消等退出路径的补偿清理。本文用连接读截止时间示例说明 stop 返回值、清理完成同步、幂等和正常完成路径的边界。375 收藏 -
Go 按字节限制输出长度时,使用 utf8.RuneStart 找到 UTF-8 字符边界,并结合 utf8.Valid 与 DecodeRune 处理非法或不完整编码。361 收藏 -
Go context.Err 负责返回统一的取消类别,context.Cause 用来读取更具体的取消原因。使用 WithCancelCause 时,Err 可能是 context.Canceled,而 Cause 可以返回业务错误。382 收藏 -
Go 的 utf8.DecodeRuneInString 遇到非法 UTF-8 时返回 RuneError 和 size=1,空字符串则返回 size=0。本文用原创示例说明如何按字节推进、区分合法替换字符,并处理分块读取的字符边界。109 收藏 -
Go 的 string 可以保存任意字节,不能只凭字符串类型判断文本合法性。本文用 unicode/utf8.ValidString 做入口校验,并结合 DecodeRuneInString 定位第一个非法 UTF-8 字节。209 收藏 -
Go database/sql 事务不能简单理解为 Commit 失败后再 Rollback。本文用可复用代码说明提交前错误的回滚写法,以及提交错误后的未知状态、幂等和对账处理。339 收藏 -
database/sql.QueryContext 返回的 Rows 可能仍占用驱动连接。本文用可复用的 Go 代码说明为什么要 Close、何时检查 Rows.Err,以及查询提前退出时如何避免连接池被拖住。258 收藏 -
Go 配置驱动正则时,不要用 MustCompile 把外部输入变成 panic。本文用 regexp.Compile、配置键包装和规则对象,说明如何把编译失败交给配置层,并处理启动、热加载与旧规则回退边界。222 收藏 -
Go 的 regexp.ReplaceAllStringFunc 会把每个完整匹配交给回调,再用回调返回值直接替换。本文用环境标记、标签规范化和版本脱敏说明动态替换、捕获组边界及 API 选择。483 收藏 -
Go regexp.FindAllStringSubmatchIndex 返回的是按捕获组编号排列的字节下标对。本文用一个键值文本解析场景说明如何映射整体匹配、命名捕获组、未匹配分支和 UTF-8 边界。134 收藏 -
Go 的 math/big.Float 使用二进制尾数精度,不是十进制小数位。本文用原创示例解释 SetPrec、舍入模式、运算接收者和 Text 输出之间的区别。470 收藏 -
Go 的 math/big.Int.SetString 通过第二个参数 base 指定进制:固定格式传明确进制,带 0b、0o、0x 前缀的输入可传 0 自动识别。本文说明返回值、下划线和不可信输入的处理边界。240 收藏 -
Go 的 math/big.Rat 用任意精度分子和分母保存有理数,适合金额比例、配额和分数计算。本文说明如何创建、解析、运算和格式化 Rat,并划清与 float64 及浮点输出的边界。312 收藏 -
Go strconv 转换失败后,用 errors.As 获取 *strconv.NumError,读取 Func、Num、Err 字段,并用 errors.Is 区分语法错误与范围错误。301 收藏 -
Go strconv.ParseFloat 可以解析 NaN、Inf 和 Infinity,但 NaN、正负无穷与普通数字溢出并不是一回事。本文用 math.IsNaN、math.IsInf 和 ErrRange 给出清晰的分类方式。501 收藏