Go语言技术文章
-
Go 的 json.Decoder 可以从 io.Reader 连续读取多个顶层 JSON 值。本文区分单对象、空白分隔对象流和 JSON 数组,给出 EOF 边界、错误处理与可复用读取函数的设计方式。134 收藏 -
在 Go sqlmock 查询期望上配置 RowsWillBeClosed,并在函数返回后检查 ExpectationsWereMet。本文用提前返回的最小测试说明结果集关闭、自动关闭边界及资源责任的排查方法。133 收藏 -
Golang · Go教程 | 2天前 | 超时 · go · 性能 · HTTP客户端 · Go net/http HTTP超时 http.Transport ResponseHeaderTimeout
Go http.Transport 的 ResponseHeaderTimeout 只限制请求写完后等待响应头的时间,不包含响应体读取。本文拆分连接、TLS、响应头和整体请求四个阶段,给出复用 Transport 的配置方式与排障边界。133 收藏 -
在 Go 的 select 中,把某个分支使用的局部 channel 变量设为 nil,就能让这个通信 case 暂时不可用;恢复为真实 channel 后分支重新参与选择。本文比较 nil、关闭 channel 和 default 的语义与使用边界。133 收藏 -
Go 的 os.CreateTemp 固定按 0600(受 umask 影响前)创建临时文件,因此权限比 0644 严格通常是正常语义。本文按触发信号、实际模式、受控 Chmod、回滚和跨进程排查说明怎样处理。132 收藏 -
以go-billy v5.6.2的memfs为例,解释Chroot后绝对路径与子根的关系,通过同一文件的内容比较区分父视图、子视图与宿主路径,并提醒不要重复拼接Root。131 收藏 -
Go GopherLua 注册 Go 函数的关键是实现 lua.LGFunction,再用 L.NewFunction 包装并通过 SetGlobal 或 SetFuncs 暴露给 Lua。本文围绕参数读取、返回值数量、错误回传和 LState 生命周期给出最小可复用写法。131 收藏 -
用 Go net/url 解析 URL 查询串,掌握 Query、Values.Get、Has、ParseQuery 在单值、多值、空值和错误处理上的边界。131 收藏 -
用 Go 的 jobs channel、context 和 sync.WaitGroup 设计 worker pool 的优雅停止与强制取消,明确任务回收、结果关闭和 Submit 并发边界。130 收藏 -
通过 NewOption 配对中文标签与稳定编码,用 Select 泛型和 Value 指针绑定接收业务值,结合最小示例说明默认值、错误处理和任务消费边界。127 收藏 -
Go 调用外部命令时,Cmd.Stdout 和 Cmd.Stderr 是两条独立输出流。本文从只看到一条日志的常见现场出发,分别介绍 bytes.Buffer、StdoutPipe、StderrPipe 和 CombinedOutput 的选择、错误处理与并发读取边界。126 收藏 -
Go HTTP 客户端拿到响应后,Body 的读取程度和关闭时机都会影响连接复用。本文按完整读取、只看状态码和有限排空三种场景说明如何选择,让 defer、读取上限与 HTTP/1 复用策略各司其职。125 收藏 -
把 Go 结构化输出测试从脆弱的长字符串断言迁移到 golden 文件:先稳定序列化,再用 -update 显式更新基线,最后输出可审阅的差异,避免测试被悄悄改绿。125 收藏 -
Golang · Go问答 | 1天前 | CGO · 内存管理 · Go问答 · Go CGO unsafe.Pointer 指针传递 runtime/cgo.Handle runtime.Pinner
Go cgo 传指针最重要的不是指针类型,而是内存由谁分配、是否包含 Go 指针以及 C 是否会在调用返回后保存它。本文按临时借用、C 堆复制、runtime.Pinner 和 runtime/cgo.Handle 说明安全边界。124 收藏 -
Go PGO 可以用 go tool pprof -proto 合并多个 CPU profile,但合并本质是样本相加。本文说明如何统一采样窗口、处理不同工作负载的权重,并把 merged.pprof 接入 default.pgo 或 go build -pgo。122 收藏