Go语言技术文章
-
Golang · Go问答 | 1个月前 | 依赖管理 · 工程实践 · Go问答 · Go workreplace go.work replace作用域 Go多模块工作区 Go本地依赖替换 Go CI依赖解析
Go 没有 go workreplace 子命令,通常指 go.work 中的 replace。本文用 use、replace、GOWORK 和 go list -m 说明工作区成员、本地替换、版本范围与 CI 下游边界。140 收藏 -
用 Go flag.Value 接收自定义命令行参数时,Set 应该如何返回非法输入错误?本文用先校验后提交的写法,说明 Parse、手动 Set 与错误定位的边界。140 收藏 -
用 iter.Seq2[int, error] 同时传出行号和校验错误,说明 range、yield、continue 与 break 的边界,以及 Go 1.23 语言版本要求。140 收藏 -
Go embed.FS 的 glob 目录要区分构建期与运行期://go:embed 模式必须匹配文件或非空目录,fs.Glob 的零匹配则应单独作为业务分支处理。本文给出稳定入口文件、隐藏文件规则和错误分层方案。140 收藏 -
解释 Go url.JoinPath 为什么会在输出中保留或生成百分号编码,区分 URL.Path、RawPath、EscapedPath、PathEscape 与 QueryEscape,并处理斜杠和点段边界。140 收藏 -
讲清 Go embed.FS 中 go:embed 匹配路径、fs.Sub 新根目录与 template.ParseFS 模式的对应关系,并给出避免重复目录和同名模板冲突的写法。140 收藏 -
Go 的 gzip.Reader 默认会连续读取拼接的 gzip 成员。本文用原创示例拆开 Multistream、Reset、io.ByteReader、EOF 与尾随数据的边界,帮助你选择整体解压或按成员处理。140 收藏 -
Go 泛型函数把类型参数放进 map[K]V 时,应使用 K comparable 表达键的比较边界。本文用可复用查找函数说明字符串、整数和结构体键的适用范围,并区分 comparable 与排序、加法、业务方法约束。140 收藏 -
Go 接口只有动态类型和动态值同时为空时才等于 nil。把值为 nil 的具体指针返回给 error,会让接口携带该指针类型,从而出现 err != nil。本文用最小示例说明原因、观察方法和正确修复方式。140 收藏 -
用一个可复现的分片读取场景,说明 os.File.ReadAt 为什么适合并发定位读取,如何用 io.SectionReader 限定区间,以及短读、EOF 和缓冲区复用的验收边界。139 收藏 -
maps.Clone 能复制 Go 的 map 容器,但它只做浅拷贝:值是切片、map 或指针时,嵌套数据仍可能共享底层对象。本文用配置快照场景说明互相影响的原因、如何按层复制,以及什么时候不必做深拷贝。139 收藏 -
Go covermode 的选择取决于是否并发以及是否需要可靠执行次数:串行包/函数覆盖率用 set,并发计数或 -race 场景用 atomic。139 收藏 -
Go go.sum 报校验失败时,不要先删文件或关闭 sumdb。本文用 go.sum、GOPROXY、GOSUMDB 和模块缓存的证据,区分代理缓存异常与同版本源码变化。139 收藏 -
Go 解析带引号换行的 CSV 字段时,不要先按换行符切分;使用 encoding/csv 的 Reader 按完整记录读取,再处理字段数和 ParseError。139 收藏 -
Go 的 log.Fatal 不是普通错误日志,它在输出消息后调用 os.Exit(1)。库代码一旦使用它,调用方进程会被直接终止。本文说明原因、defer 边界、正确的 error 返回方式,以及应用入口该如何接管退出策略。139 收藏