Go语言技术文章
-
Go Zerolog 的 Info、Error 等方法只会创建待提交的 Event;本文说明为什么缺少 Msg 会没有输出,并给出 Msg、Msgf、Send 及等级、采样、writer 排查顺序。395 收藏 -
Go HTTP 请求应把 context 超时绑定到 Request,并在拿到响应后关闭 Response.Body;循环调用时复用同一个 http.Client,让 Transport 有机会复用持久连接。395 收藏 -
Go 标准库 flag.FlagSet 默认把 usage 和参数解析错误写到标准错误输出。本文用 SetOutput、ContinueOnError 和自定义 Usage 拆开说明如何把这些消息交给指定 Writer,并给出命令行程序与单元测试都能复用的写法。395 收藏 -
用 Go slices.Replace 替换切片的半开区间,掌握替换元素数量变化时的长度计算、底层数组复用和越界边界。394 收藏 -
Go mod why 展示的是从主模块到目标包的最短包级引入路径。本文结合实际排查依赖的经历,说明普通查询、-m、-vendor 与 go mod graph 的区别,以及出现未引用提示时怎样判断。394 收藏 -
Go encoding/json 默认会忽略结构体中没有对应字段的 JSON key。本文说明 Decoder 的未知字段边界、结构体匹配规则,以及如何用 DisallowUnknownFields 显式启用严格解析。394 收藏 -
Golang · Go问答 | 2星期前 | 标准库 · go · database/sql · Go database/sql driver.ErrSkip NamedValueChecker DefaultParameterConverter ColumnConverter
Go 数据库驱动的 NamedValueChecker 不必覆盖所有参数类型。本文说明 driver.ErrSkip 如何把未处理类型交给 ColumnConverter 或 DefaultParameterConverter,并区分普通转换错误与 ErrRemoveArgument,帮助定位参数类型和数量问题。394 收藏 -
解释工作区模式下 go.work replace 覆盖成员模块 go.mod replace 的原因,演示如何确认 GOWORK、匹配规则和最终模块来源,并给出可回滚的修复方法。394 收藏 -
Go 的 norm.Properties(...).BoundaryBefore() 用来判断当前 rune 是否开启新的规范化片段。本文从单点判断讲到 NextBoundaryInString,说明如何在 UTF-8 分块输入中找到不会切断组合标记的安全位置。394 收藏 -
Go slices.EqualFunc 用自定义 eq 函数按索引比较两个切片,长度不同直接返回 false,比较器首次返回 false 时停止。本文结合跨类型字段比较,说明比较器签名、空切片边界和副作用控制。394 收藏 -
用 cel.Variable 声明 CEL 输入变量,配合 Env.Compile 和 Env.Program 编译可复用的 Go 筛选表达式,并区分编译期与求值期错误。394 收藏 -
用 Go 的 go-diff/diffmatchpatch 从旧文本和新文本生成可保存的补丁,接收端解析后应用到基线文本,并正确处理逐项失败结果。394 收藏 -
Go 的 OpenFile 和 Create 传入的是创建前权限,Unix umask 还会屏蔽其中一部分位,因此最终权限可能比参数小。本文说明 perm、umask 与最终模式的关系,并给出不污染进程全局状态的处理方式。394 收藏 -
Go strconv.ParseBool 只接受固定的 1、t、true、0、f、false 等布尔文本,yes/no、on/off 和带空格的输入需要业务层先明确处理。本文从配置、环境变量和表单输入三个场景说明如何检查 error、区分 false 与解析失败,并用适配函数扩展业务别名。394 收藏 -
Go database/sql 的 ColumnType.Nullable 返回 nullable 和 ok 两个值。本文解释驱动不支持时为什么不能把 false 当成不可空,并给出跨数据库代码保存 unknown、按需做方言适配的兼容写法。394 收藏