Go语言技术文章
-
Golang · Go教程 | 3星期前 | channel · Context · Go教程 · Channel关闭 context取消 发送方关闭 Go数据管道 Go pipeline 多阶段并发
本文实现一个源阶段、转换阶段、过滤阶段和汇聚端组成的 Go 数据管道。每个阶段创建、发送并关闭自己的输出 Channel,下游只接收;同时用 context 处理提前结束,并说明多 worker 阶段如何等待全部发送完成后单点关闭。492 收藏 -
regexp.FindReaderIndex 返回的是 UTF-8 字节偏移,不是字符序号。本文解释中文文本中的位置差异,并给出保留原文后把字节区间换算为 rune 位置的方法。491 收藏 -
Go hash/fnv.New32a 适合为字符串或字节流生成稳定的 32 位非加密哈希。本文从最小写法出发,说明 Write、Sum32、Sum 的区别,演示分片输入,并划清 FNV-1a 与密码学哈希的使用边界。491 收藏 -
Go 1.27 允许结构体字面量直接使用有效的 promoted field selector 初始化非指针嵌入字段。本文用最小示例说明版本、指针嵌入、字段遮蔽和混用键的边界。491 收藏 -
Go slog 的 JSON 时间格式取决于字段来源、时区与布局。通过 ReplaceAttr 将内置日志时间改为 UTC 固定毫秒字符串,并区分业务时间、分组字段、零值记录及采集端类型兼容。491 收藏 -
Go 字符串转 []byte 时,普通转换会复制数据,unsafe.StringData 与 unsafe.Slice 则可能创建只读别名。本文说明别名写入、append、uintptr 中转、空字符串和长度边界的生命周期风险,并给出安全的封装与选择建议。491 收藏 -
Go POSIX 与默认正则既有语法范围差异,也有最左最先与最左最长的选择差异。本文通过原创对照示例说明 Compile、CompilePOSIX、Longest 的取舍,并提醒捕获分组和并发配置边界。491 收藏 -
Go 的 net/http/pprof 默认注册到 DefaultServeMux;业务服务使用自定义 ServeMux 时,需要显式把 Index、Handler、Profile、Symbol 和 Trace 注册到诊断 mux,再交给独立 HTTP Server。491 收藏 -
Golang · Go问答 | 2星期前 | 并发 · channel · select · goroutine · go · go并发通信 Go channel发送阻塞 channel缓冲区满 select非阻塞发送
Go channel 是否会阻塞,关键看发送时有没有匹配接收者,或有缓冲 channel 是否仍有空位。本文区分 nil、无缓冲、有缓冲和已关闭 channel,并用 select 写出可控的非阻塞发送。491 收藏 -
介绍 Go billy.Filesystem.TempFile 的创建方式,演示如何在测试中保存路径,并用 t.Cleanup 按 Close 后 Remove 的顺序可靠清理临时文件。491 收藏 -
Go pem.Decode 找到 PEM 块后会返回结束标记之后的 rest;本文用前导空白、多个块和尾部文本说明消费边界,并给出可复用的循环读取写法。491 收藏 -
Go 代理要把上游响应逐块交给客户端时,可用 ResponseController 统一调用 Flush,并处理包装器、客户端断开、HTTP/2 与反向代理缓冲等边界。491 收藏 -
讲清 Go time.Ticker 的停止语义、context 取消、慢任务丢 tick 与服务关闭等待,给出可直接改造的周期任务循环。491 收藏 -
Doublestar 默认会把静态前缀不存在视为无匹配结果。本文区分空结果、ErrBadPattern、ErrPatternNotExist 与普通 I/O 错误,并给出 WithFailOnPatternNotExist 的迁移写法。490 收藏 -
Go riff.Next 返回的块 Reader 会在下一次 Next 后失效。本文解释共享读取状态,给出带单块、总量和数量预算的数据复制函数,并说明并发与 LIST 嵌套读取的边界。490 收藏