Go语言技术文章
-
Golang · Go教程 | 3天前 | 标准库 · 数据库 · uuid · Go教程 · database/sql · Go标准库uuid uuid.New UUID数据库 BINARY(16) CHAR(36) uuid.Parse
Go 1.27 标准库 uuid 生成 UUID 后,如何根据数据库字段选择 BINARY(16) 或 CHAR(36),并完成参数绑定、查询读回和 uuid.Parse 校验。344 收藏 -
go test -race 出错时,先确认是运行时竞态、普通测试失败还是平台不支持,再沿着 Read by、Previous write 和 goroutine 创建栈定位共享状态,修复后用 -count=1 复查。343 收藏 -
Go 的 math/big.Rat.SetString 会把合法十进制解析为精确有理数,但显示精度与内部精度不是一回事。本文用 RatString、Denom、FloatPrec 和 FloatString 分清四种检查方式。343 收藏 -
围绕 Go testing.T Cleanup 讲清后注册先执行的规则,示范如何按资源依赖登记清理函数、隔离子测试资源并处理清理错误。343 收藏 -
Golang · Go问答 | 3星期前 | Go问答 · Go fmt.Fscan剩余换行 Go读取换行分隔输入 fmt.Fscan与ReadString Go空行处理 bufio.Reader整行读取
解释 Go fmt.Fscan 将换行视为空白分隔符时的边界行为,给出切换到 ReadString、Fscanln 和整行解析的实用方案。343 收藏 -
Go 1.22 新增 reflect.TypeFor[T](),可以在没有现成值时直接取得泛型参数 T 对应的 reflect.Type。本文通过最小示例、接口类型对比和泛型注册表说明 TypeFor 与 TypeOf 的区别及使用边界。343 收藏 -
Go database/sql 的 Scanner 接收到的 []byte 可能由驱动暂时拥有,下一次 Scan 后就不再适合长期引用。本文区分 *[]byte、sql.RawBytes、interface{} 和自定义 Scanner 的复制边界。343 收藏 -
用 Go text/scanner 扫描数字时,先通过 TokenText() 保存原始字面量,再按 token 类型做数值转换,避免下划线、进制和指数写法在处理中丢失。342 收藏 -
encoding/csv.Reader 的 ReuseRecord 可以复用上一轮记录切片的底层数组,减少大批量读取时的切片分配。本文给出逐行转换、分批写入与跨轮次复制的安全写法。342 收藏 -
Go 的 context.AfterFunc 回调是在上下文取消后异步启动的,stop 返回 true 才表示回调被阻止;返回 false 不等于回调已经完成。本文按取消、停止和完成三个时刻拆解排查方法,并给出可等待回调收尾的写法。342 收藏 -
Go embed.FS 保留完整目录树,fs.Sub 可以把 web 子目录暴露为新的文件系统根目录。本文用最小代码说明路径变化、fs.ReadFile 检查方法以及接入 http.FileServer 时的常见错误。341 收藏 -
Go bufio.Reader.UnreadByte 只能撤回最近一次成功读到的字节,因为 Reader 只维护一个回退状态而不是历史栈。本文结合缓冲游标、失效调用和替代方案说明如何正确处理解析试探。341 收藏 -
性质测试适合输入域宽、确定性强且能写出不变量的函数;示例断言更适合少量关键业务边界、精确输出和外部状态行为。本文结合 Go 原生 fuzzing,给出选择矩阵、幂等性示例、反例与混合测试清单。341 收藏 -
敏感信息进入 Go 日志后,不能只靠调用点自觉替换。本文先说明已泄露日志的止损,再用 slog LogValuer、ReplaceAttr 和统一 Logger 装配建立多层脱敏,并列出嵌套字段、自由文本与旁路输出的验证清单。341 收藏 -
自定义 slog.Handler 重复输出属性,通常源于 WithAttrs 修改共享切片、WithGroup 重复展开或 Handle 合并了两次。本文按属性来源、不可变派生和分组作用域给出排查与修复方法。341 收藏