Go教程技术文章
-
讲清 Go fs.WalkDir 遇到权限错误时的回调语义,用 errors.Is 判断权限并返回 fs.SkipDir,保留其他目录继续遍历。253 收藏 -
讲清 Go http.ServeContent 中 modtime 的真实作用:如何配合 Range、If-Range 和 Last-Modified 返回稳定的部分内容响应,并避开 time.Now() 造成的缓存问题。253 收藏 -
介绍 Go 中如何让 zip.Reader 作为 fs.FS 使用,覆盖磁盘 ZIP、内存 ZIP、fs.ReadFile、fs.ReadDir、fs.Sub、路径约束与资源关闭。253 收藏 -
用 Go testing/fstest.MapFS 构造内存文件,演示 ReadFile 读取指定路径,并用 errors.Is 区分非法路径、文件不存在和正常结果。253 收藏 -
Golang · Go教程 | 2星期前 | Go教程 · database/sql · database/sql Go数据库 Rows.ColumnTypes ColumnType.Nullable
Go database/sql 的 ColumnType.Nullable 返回可空值和信息是否可靠两个结果。本文说明怎样通过 Rows.ColumnTypes 读取列可空性,并正确处理驱动不支持和未知状态。253 收藏 -
Go json.Decoder 解码到 any 时,JSON 数字默认会落到 float64。本文说明如何用 UseNumber 保留为 json.Number,再按业务边界解析成 int64 或 float64,避免大整数提前丢失精度。253 收藏 -
手工创建 go/types.Interface 时,先准备好显式方法和嵌入类型,等嵌入类型完全定义后调用 Complete,再读取 NumMethods、Method 或方法集。本文按构造、完成、查询顺序说明方法集计算时机与重复方法边界。253 收藏 -
用 base64.Encoding.Strict 对比普通解码,验证末尾填充位、CorruptInputError 和 DecodeString 的错误边界,给出可复现的 Go 示例。252 收藏 -
Go regexp 支持命名捕获组,适合解析带可选字段的日志和配置文本。本文用 SubexpNames、SubexpIndex 和 FindStringSubmatch 区分整体不匹配、可选字段缺失与业务默认值。252 收藏 -
Go 嵌入资源读取失败时,不要先手写 ReadFileFS。本文按接口分派、embed.FS 路径、fs.ValidPath、PathError 和自定义实现契约逐层排查。252 收藏 -
从真实 time.Sleep 迁移到 Go testing/synctest:用 bubble、虚拟时间和 Wait 稳定并发测试,并梳理网络 I/O 与资源清理边界。252 收藏 -
io.Writer 只保证 Write([]byte),不能直接假设目标一定有 WriteString。本文用 io.StringWriter 和 io.WriteString 说明能力判断、兼容回退,以及包装器带来的边界。252 收藏 -
通过显式提取 Context 中的请求标识并用 Logger.With 派生请求日志器,为多条 slog 日志复用上下文字段。提供完整 Go 示例,解释 InfoContext、全局默认日志器、字段缺失与重复键的边界。252 收藏 -
本文用一个小型 Go 工具说明 time.Time.UnixMilli 如何生成毫秒时间戳,解释 UnixMilli 与 Unix 的单位区别、1970 年以前的负值、双向还原以及 JSON 和数据库边界的统一约定。252 收藏 -
通过动态比较小函数说明Go reflect.Value.Comparable与Type.Comparable的差异,处理接口字段、nil、不同类型及不可比较输入,区分可比较、相等和排序能力。252 收藏