Go语言技术文章
-
Go 1.23 起可以直接用 os.CopyFS 把 fs.FS 的目录树复制到磁盘。本文从 os.DirFS 和 fs.Sub 的根路径开始,给出嵌入文件与本地目录示例,并排查已存在文件、路径和权限错误。444 收藏 -
Go regexp 默认采用 leftmost-first 规则,同一起点有多个候选时不一定选择最长结果。本文用 Regexp.Longest 说明 leftmost-longest 的差异、调用时机、并发边界,并比较它与 CompilePOSIX 的适用场景。444 收藏 -
用 Go Pond 的 NewGroup、SubmitErr 和 Wait 统一等待一批并发任务并收集错误,同时说明首个错误后的取消边界与 StopAndWait 收尾方式。444 收藏 -
Go genetlink的Command属于内层通用消息头,Netlink外层Type负责选择协议族。结合离线封装示例,说明familyID、版本、请求标志及控制消息的区别。444 收藏 -
atomic.Value 虽然接收 any,但同一个 Value 的 Store、Swap 和 CompareAndSwap 必须保持一致的具体类型。本文解释首个 Store 的类型锁定、nil 规则、常见 panic 以及统一快照结构的改法。444 收藏 -
用 os.DirFS 和 fs.WalkDir 固定文件系统边界,直接消费相对路径完成 Go 文件批处理,并说明路径转换、DirEntry、错误处理、排序和符号链接的性能边界。444 收藏 -
讲清 strconv.AppendQuote 如何把字符串追加为 Go 双引号字面量,说明返回值、缓冲区复用、转义边界,并给出可复现的基准比较模板。444 收藏 -
Go 中可以用 bytes.Buffer.Reset 清空当前长度并保留底层容量,适合在请求循环里复用临时缓冲。本文用可运行示例说明 Reset 的调用位置、Bytes 返回切片的生命周期、并发限制,以及大缓冲不应无限复用的边界。444 收藏 -
用 os.Args 切分入口参数,为每个子命令创建独立 FlagSet。本文给出完整示例,说明同名选项、位置参数、全局前缀和 ErrHelp 的处理边界。444 收藏 -
用一个可复现的 CSV 导入故障,讲清 encoding/csv 的 FieldsPerRecord、ErrFieldCount、ParseError 和 FieldPos 如何配合定位最后一行字段数不一致。443 收藏 -
gopls 0.23 移除了 fix、inspect 和 bug 子命令。本文按实际迁移边界说明 codeaction、remote、serve 的职责变化,并处理 importsSource 与 analyzer 配置兼容问题。443 收藏 -
Go 泛型约束允许某些类型,不代表一次调用可以让不同实参各自选择类型。本文从类型推断、无类型常量和可赋值规则入手,定位接口约束通过但调用仍类型不匹配的原因。443 收藏 -
Go 中通常把 sync.Mutex 作为值字段嵌入结构体,再用指针接收者编写方法。本文解释值接收者为何会复制锁,以及何时才适合使用 *sync.Mutex。443 收藏 -
Golang · Go教程 | 2个月前 | 标准库 · 定时器 · Go教程 · Go time.Timer Timer.Reset Timer.Stop 定时器复用 asynctimerchan 旧事件
Go 1.23 默认 timer channel 已不会让 Reset 后读到旧事件,但旧版本或 asynctimerchan=1 仍需 Stop、排空 t.C 再 Reset。本文按版本、接收状态和 AfterFunc 边界给出可复用写法。443 收藏 -
用 Go slog.LogValuer 延迟展开业务对象:以轻量包装器配合 GroupValue 控制字段、脱敏和派生计算,并说明自定义 Handler、可变对象与 Resolve 的边界。443 收藏