Go语言技术文章
-
从运行时值、泛型类型参数和接口类型三个角度比较 reflect.TypeFor 与 TypeOf 空指针技巧,说明 nil interface 陷阱以及该怎样选择更直观的写法。126 收藏 -
Go 调用外部命令时,Cmd.Stdout 和 Cmd.Stderr 是两条独立输出流。本文从只看到一条日志的常见现场出发,分别介绍 bytes.Buffer、StdoutPipe、StderrPipe 和 CombinedOutput 的选择、错误处理与并发读取边界。126 收藏 -
math/big.Int.FillBytes 会把整数的绝对值写入调用方提供的字节切片;切片过短时高位会被截断。本文用 BitLen 预估容量,在固定宽度字段写入前拒绝不安全目标,并说明负数、零值和缓冲区复用边界。125 收藏 -
Go HTTP 客户端拿到响应后,Body 的读取程度和关闭时机都会影响连接复用。本文按完整读取、只看状态码和有限排空三种场景说明如何选择,让 defer、读取上限与 HTTP/1 复用策略各司其职。125 收藏 -
把 Go 结构化输出测试从脆弱的长字符串断言迁移到 golden 文件:先稳定序列化,再用 -update 显式更新基线,最后输出可审阅的差异,避免测试被悄悄改绿。125 收藏 -
Golang · Go问答 | 3天前 | CGO · 内存管理 · Go问答 · Go CGO unsafe.Pointer 指针传递 runtime/cgo.Handle runtime.Pinner
Go cgo 传指针最重要的不是指针类型,而是内存由谁分配、是否包含 Go 指针以及 C 是否会在调用返回后保存它。本文按临时借用、C 堆复制、runtime.Pinner 和 runtime/cgo.Handle 说明安全边界。124 收藏 -
Golang · Go问答 | 5天前 | HTTP服务 · Go问答 · Go net/http 连接生命周期 StateHijacked StateClosed http.Server.ConnState 会话资源
用 Go 的 http.Server.ConnState 管理连接级会话资源,区分 StateIdle、StateClosed 与 StateHijacked,给出受 mutex 保护、可幂等清理的资源注册表写法,并说明 HTTP/2 与优雅停机边界。123 收藏 -
Go PGO 可以用 go tool pprof -proto 合并多个 CPU profile,但合并本质是样本相加。本文说明如何统一采样窗口、处理不同工作负载的权重,并把 merged.pprof 接入 default.pgo 或 go build -pgo。122 收藏 -
Go test -cover 的高百分比不等于边界已覆盖。本文用一个输入校验例子,说明如何拆分分支矩阵、补齐错误路径,并用 coverprofile 找到真正漏测的位置。122 收藏 -
Go 使用 os.OpenRoot 建立可信目录句柄后,可通过 Root 方法按相对名称访问文件。本文给出有限文本预览示例,说明路径拼接、符号链接、平台例外、业务授权及句柄关闭各自的边界。122 收藏 -
Go strings.Replacer 适合把多组固定文本替换规则集中管理。本文说明 NewReplacer 的成对参数、重叠键的顺序、Replace 与 WriteString 的选择,以及规则复用时的边界。122 收藏 -
Go 日志里遇到换行、制表符、引号或反斜杠时,直接打印 rune 容易让字段边界变得不可读。本文用 strconv.QuoteRune 生成稳定的单引号字符字面量,再比较 ASCII 和图形字符版本,补上无效 Unicode 码点与结构化日志的处理边界。121 收藏 -
长期运行的 Go worker 不应只等待 time.Ticker.C:把 ticker 的所有权交给 worker,用 context 定义退出条件,在退出路径调用 Stop,并根据周期变化选择 Reset 或重建,才能避免 goroutine 与定时任务生命周期失配。121 收藏 -
Go 的 archive/tar 只负责顺序读取归档条目,不会替业务自动决定输出目录边界。本文围绕路径穿越、绝对路径、符号链接、硬链接和设备节点,比较词法过滤、专用空目录与更强文件系统隔离三种方案,并给出一套拒绝危险类型、只写入目标目录的解包实现。120 收藏 -
Bubble Tea 的 tea.Batch 适合互不依赖的命令并发组合,tea.Sequence 适合必须按顺序执行的命令。本文用原创 Go 示例说明两者的结果顺序、依赖关系、nil 命令与错误处理边界。119 收藏