Go语言技术文章
-
Go text/template 使用自定义函数时,应先通过 Funcs 注册 FuncMap,再调用 ParseFS 解析引用这些函数的模板。本文结合 embed.FS 说明调用顺序、函数签名、解析错误与执行错误的区别。406 收藏 -
Go XML Decoder 关闭 Strict 可容忍部分缺失标签与实体错误。通过小样本 Token 对照说明容错边界,区分解析成功、字符映射、HTML 兼容和业务数据正确性。412 收藏 -
Go 在 Linux 子进程结束后,通过 Wait、ProcessState 和 Rusage 读取 CPU 时间与峰值 RSS。示例保留失败任务统计,区分墙钟耗时、实时内存和累计子进程口径。373 收藏 -
Go 的 os/user.Current 用于获取当前进程用户,首次调用后会缓存结果;os/user.Lookup 用于按用户名查询,并在找不到用户时返回 UnknownUserError。本文结合 cgo、osusergo 和跨平台字段差异说明怎样选择。171 收藏 -
Go 服务端拿到 UnixConn 后,怎样读取连接对端的 pid、uid、gid?本文从 socket 文件权限和连接凭据的区别讲起,给出 Linux 下通过 SyscallConn、RawConn.Control 与 SO_PEERCRED 获取 Ucred 的写法,并说明如何隔离 BSD/macOS 等平台差异。302 收藏 -
Go 使用 unixgram 接收本地数据报时,每次读取对应一个独立报文,但缓冲区太小会让消息内容被截断。本文用 ReadFromUnix 和 ReadMsgUnix 说明怎样保留边界、识别风险并选择合适的读取方式。336 收藏 -
Go HTTP/3 客户端可通过 RoundTripper 隔离业务接口,用互斥文件控制构建。但运行时关闭和构建标签不等于模块可选,工具链兼容还需按依赖版本处理。471 收藏 -
Go HTTP/2 出现连接中断、请求卡住或帧错误时,可以先用 GODEBUG 打开 net/http 的调试日志。本文按开关作用范围、日志粒度和排障顺序说明怎样取得有效线索。366 收藏 -
Go PGO 可以用 go tool pprof -proto 合并多个 CPU profile,但合并本质是样本相加。本文说明如何统一采样窗口、处理不同工作负载的权重,并把 merged.pprof 接入 default.pgo 或 go build -pgo。122 收藏 -
Go runtime/trace 用 NewTask 标记可跨 goroutine 的逻辑任务,用 WithRegion 标出单个 goroutine 内的阶段;本文说明 context 传递、Task.End 生命周期和类型命名边界。331 收藏 -
Go mutex profile 默认不采样,先用 runtime.SetMutexProfileFraction 开启,再通过 pprof 的 mutex 数据定位锁竞争热点。本文解释采样比例、采集方式和栈信息判读,避免把 Lock 调用误当成唯一根因。186 收藏 -
Go 新循环变量语义改变了 loopclosure 诊断。区分循环声明与外部赋值变量,用显式参数绑定任务,并说明无诊断不代表闭包或共享对象并发安全。485 收藏 -
go vet 的 copylocks 检查会提醒你:包含互斥锁、Once 或 WaitGroup 的值不应沿着参数、返回值、赋值和 range 路径被复制。本文用最小结构体说明告警边界,并给出指针接收者、指针集合和 CI 检查的修复方式。441 收藏 -
Go test -json 输出是换行分隔的 JSON 事件流。本文按 Action、Package、Test 和 Output 等字段拆解测试事件、构建事件与输出拼接方法,并给出可直接接入 CI 的 Go 解析示例。330 收藏 -
Go trimpath 改写构建机绝对路径后,仍可保留文件名与行号。通过错误日志示例,对比两种构建,并用发布标识、源码快照和逻辑路径维持可用定位。270 收藏