Go语言技术文章
-
Go 可以用文件名后缀和 //go:build 条件编译为 Windows、Linux 提供不同实现。本文用一个跨平台文件权限接口说明目录组织、构建标签、文件选择检查和常见坑。438 收藏 -
Go 接口值用 == 比较并不总是安全:当两个接口装着相同的切片、map 或函数类型时,比较会在运行时 panic。本文用最小示例说明原因,并给出动态类型检查与按业务语义比较的写法。378 收藏 -
用 go test 生成 Go 测试覆盖率文件,再用 go tool cover 按函数和语句定位未覆盖代码,并说明多包与集成测试的 covdata 边界。113 收藏 -
Go 1.21 改变了 panic(nil) 与 recover 的返回语义。本文解释默认行为、旧模块兼容开关,以及如何用非 nil 哨兵稳定判断 panic。422 收藏 -
Go 单元测试中不要让 http.Client 访问真实网络,可以注入自定义 RoundTripper,返回可控响应并断言请求方法、URL、请求头和错误边界。165 收藏 -
循环中 defer Close 不会在本轮循环结束时执行,而是等外层函数返回,文件多时就会让文件描述符持续累积。本文用小函数或显式 Close 修复这一边界,并说明如何检查关闭错误。202 收藏 -
用 testing.M 的 TestMain 管理测试包级初始化和统一清理,再用 t.Cleanup 隔离单个测试资源,避免测试结果被清理逻辑覆盖。398 收藏 -
Go 里的无标签 break 只结束最近的 for、switch 或 select。本文用嵌套示例说明为什么 switch 中的 break 不会跳出外层循环,以及标签、函数拆分和返回值的选择。125 收藏 -
用 testing/fstest 的 MapFS 在内存中准备文件内容,测试 Go 文件读取、目录边界和缺失文件分支;再用 TestFS 检查自定义 fs.FS 的基本行为。278 收藏 -
Go range 遍历结构体切片时,迭代变量拿到的是元素值副本;本文对比索引、指针切片和 map 的写法,说明怎样让字段修改真正写回原数据。478 收藏 -
Go 中使用 filepath.EvalSymlinks 沿路径解析符号链接,得到当前文件系统中的实际目标路径;同时处理相对路径、断链、循环链接、权限错误以及解析后的访问边界。381 收藏 -
Golang · Go问答 | 14小时前 | map · 零值 · Go问答 · 运行时错误 · Go make nil map map初始化 assignment to entry in nil map
Go nil map 可以读取、len 和 range,却不能给元素赋值。本文解释 nil map 与空 map 的边界,演示 make 初始化,并排查函数返回值和结构体字段中的初始化遗漏。236 收藏 -
Go 用 filepath.Glob 按通配符查找文件时,无匹配不是异常,非法模式才需要处理 error。本文从最小写法出发,说明 filepath.Join、空切片、ErrBadPattern、路径分隔符和递归查找之间的边界。429 收藏 -
Go 的 map 元素不是可寻址变量,不能直接给 map 中结构体的字段赋值。本文解释编译错误原因,并给出读改写回、指针值与并发检查的实用写法。290 收藏 -
Go 1.24 引入的 os.Root 可以把文件操作固定在指定目录树内。本文用一个 HTTP 文件服务示例说明 filepath.Localize、Root.Open、目录判断、错误响应和平台限制。128 收藏