Go语言技术文章
-
filepath.WalkDir 会访问符号链接这一项,但不会自动进入它指向的目录。本文用 DirEntry、os.Stat 和错误回调拆开链接本身、目标信息、失效链接与权限错误的处理边界。132 收藏 -
Go 类型断言返回 ok=true,只能说明接口里的动态类型匹配,不能证明断言得到的指针非 nil。本文用 typed nil 示例拆解接口值、断言结果和方法调用的边界,并给出 nil 与 error 的安全处理写法。103 收藏 -
使用 Go filepath.WalkDir 扫描目录时,先处理回调错误并记录 path,再用 SkipDir 控制目录过滤;本文还说明 DirEntry、符号链接和根路径失败的边界。162 收藏 -
解释 Go 中 typed nil 为什么会让 error != nil,演示如何拆分接口的动态类型和值,并给出无错误分支直接返回 nil 的修复写法。224 收藏 -
用 Go filepath.WalkDir 递归过滤指定扩展名文件,正确处理目录、符号链接、根路径失败和子目录读取错误,保留部分结果与错误清单。255 收藏 -
Go 泛型调用遇到 untyped constant 时,类型参数通常按默认类型推断,赋值左侧不会反向改变 P。本文用 MyInt 示例拆开推断、约束和显式转换的边界。259 收藏 -
Go 的 ZIP 条目名本来就使用正斜杠表示层级,但不能把名称直接拼到解压目录。本文用 archive/zip、filepath.IsLocal 和 filepath.Localize 还原目录结构,并区分目录条目、文件名编码与读取错误。149 收藏 -
Go 泛型约束允许某些类型,不代表一次调用可以让不同实参各自选择类型。本文从类型推断、无类型常量和可赋值规则入手,定位接口约束通过但调用仍类型不匹配的原因。443 收藏 -
Go 的 archive/zip 中,目录条目和空文件都可能没有可读内容,但判断依据不同。本文用 FileHeader.IsDir、Name、NonUTF8 和 Open 组织一个安全的解压循环,说明如何保留空文件并定位条目读取错误。274 收藏 -
Go 泛型函数调用时类型参数推断失败,先检查类型参数是否出现在普通参数中,再排查约束冲突、nil 和无类型常量,最后决定补写类型实参还是调整函数签名。159 收藏 -
用 Go archive/zip 按条目读取大文件,先检查目录元数据,再用 File.Open 和 io.CopyBuffer 流式处理,同时区分文件名编码、路径安全、压缩算法和校验错误。385 收藏 -
Go 中同名包不代表同一个导入目标。本文用 go list 对照 ImportPath、Dir 和 Name,说明如何核对 go.mod 模块路径、internal 父目录与调用方边界,并定位真实加载错误。385 收藏 -
用 io/fs.FS 统一 Go 的 embed.FS 与 os.DirFS,解释 fs.ValidPath 的路径规则、发布目录边界和开发环境切换方式。403 收藏 -
Go replace 只改变模块源码的解析位置,不会绕过 internal 的导入边界。本文用 go.mod、import path 和 go list 说明本地替换、模块改名及公共包迁移的处理方法。127 收藏 -
Go 的 //go:embed 资源属于 embed.FS,os.Stat 查询的是当前工作目录。本文用 fs.ValidPath、fs.Stat 和路径层级排查嵌入静态资源找不到的原因。480 收藏