Go教程技术文章
-
Go 多模块开发时,可以用 go.work 将多个独立 go.mod 纳入同一工作区,让业务模块直接使用本地依赖模块。本文对比 go.work、replace 和正式版本依赖的边界,并给出拆分与发布建议。179 收藏 -
Go 标准库 uuid.UUID 本质是 16 字节数组。本文讲清 36 字节规范文本、32 字符兼容文本和 16 字节原始二进制的区别,并给出安全双向转换、格式选择与避坑代码。178 收藏 -
Go 的 crypto/sha512 同时提供 New512_256 和 New512。本文从算法身份、摘要长度、流式接口和协议迁移边界说明两者区别,并给出同一输入下的并排计算示例。178 收藏 -
Go container/list 的 MoveToFront 只会移动属于当前链表的 Element。传入另一个链表创建的节点时,当前链表不会修改;本文用最小示例拆解症状、官方契约和节点归属修复。177 收藏 -
Go build tags 与平台文件后缀在构建时选择源文件。本文通过互斥的 Linux、Windows 和通用实现,说明目标平台、包级排障命令、回退方式与跨平台交付边界。175 收藏 -
Go tcell 绘制中文、全角符号或 emoji 时,不能按 rune 数量固定让列坐标加一。本文从覆盖现象出发,说明 Put 返回的显示宽度、右边界判断和宽字符占两格的绘制方式。174 收藏 -
用 Go Goldmark 的 ast.Walk 遍历 Markdown AST,提取 Heading 层级和纯文本,生成可用于目录、侧栏和锚点的结构。174 收藏 -
用 Action、Package、Test 和 FailedBuild 读懂 go test -json 的换行 JSON 流,区分测试事件、构建事件与包级结果。173 收藏 -
用 goquery.Map 把一组 HTML 节点按原顺序转换成强类型 Go 结构体切片,并说明 Attr 缺失、空文本、校验和批量解析时的边界处理。173 收藏 -
sync.Once 适合只允许成功初始化一次的场景,但初始化函数一旦返回或 panic,后续 Do 不会重试。本文用显式状态机实现并发等待、失败退避、context 取消与成功缓存,并给出方案选择边界。172 收藏 -
Go 1.22 的 slices.Concat 可以把多个同类型切片按传入顺序合并成新切片。本文用最小示例说明顺序、空切片、nil 结果、自定义切片类型,以及它与 append 的选择边界。168 收藏 -
Go runtime/metrics.Read 支持把指标名称放入可复用的 Sample 切片中批量读取。本文从定时采集场景出发,说明如何准备固定容器、按 ValueKind 取值、处理 KindBad,并在并发采集时隔离底层数组,减少不必要的采集分配。167 收藏 -
testing/synctest 用 bubble 隔离 goroutine,并把 time 包切换到虚拟时钟。本文从超时测试出发,说明 Test、Wait、资源清理和外部 I/O 的边界。165 收藏 -
Go net.Buffers 可以把多个字节切片作为一次写入组织起来。本文从协议拼包场景出发,说明 WriteTo 的使用方式、已写字节数与错误处理,以及空片段和缓冲区复用的边界。164 收藏 -
bufio.Scanner 默认按换行切分,输入中的零字节通常会作为普通字节保留。本文用小样例排查默认边界、自定义 NUL 分隔和超长 token 限制,并给出 Scanner 与 Reader 的选择建议。163 收藏