Go语言技术文章
-
Go sync.Once 只保证初始化函数执行一次,不会因为返回错误自动重试。本文解释其完成状态语义,并给出失败可重试、成功只执行一次的互斥封装。331 收藏 -
旧式 Go // +build 语法中,空格表示候选项之间的 OR,逗号表示同一项中的 AND,多行约束还要继续做 AND。本文给出等价布尔式、现代 //go:build 写法和 go list 核对方法。331 收藏 -
Go archive/zip 的文件名由 Create 参数或 FileHeader.Name 决定。本文用原创示例说明如何生成稳定的相对路径,并处理目录、重复名、分隔符和中文名编码边界。330 收藏 -
解释 Go 中 unsafe.Pointer 与 uintptr 的生命周期差异,说明为什么地址整数不能长期保存,并给出受限偏移、真实指针、索引和检查工具的可执行判断方法。330 收藏 -
从 Go pprof goroutine profile 的等待状态和栈顶函数入手,区分通道、锁、网络、定时器与可运行协程,并说明何时切换到 block、mutex profile 或 trace。330 收藏 -
Go module checksum mismatch 不要先删 go.sum。本文通过 go mod download -json、go.sum、GOSUMDB 与 GOPROXY 对照,判断是内容变化、代理缓存还是私有模块配置边界。328 收藏 -
用 errgroup.WithContext、SetLimit、TryGo 和 Wait 处理 Go 并发读取与转换任务,讲清并发上限、错误取消、结果收口和常见边界。327 收藏 -
Golang · Go教程 | 4天前 | 性能优化 · Go教程 · go bytes.Buffer bytes.Buffer Reset Go 缓冲区复用 Go Buffer 容量复用 Go Bytes 切片别名
Go 复用 bytes.Buffer 时,Reset 会把可读长度归零并保留底层存储。本文用连续写入、容量观察和 Bytes 切片复制说明正确用法与生命周期边界。327 收藏 -
Go 的 csv.Reader.LazyQuotes 只放宽双引号语法,不会取消字段数、分隔符和记录边界检查。本文按输入形态说明哪些脏 CSV 仍会失败,并给出可定位错误的读取写法。327 收藏 -
通过业务层、bufio.Writer 缓冲层和底层 io.Writer 的分层记录,区分 Go 写入阶段错误与最终 Flush 错误,并给出第一次错误的收口方式。325 收藏 -
本文用具体代码说明 Go bytes.Clone 如何解除 []byte 与原切片的底层数组别名,并梳理 nil、空切片、子切片 len/cap 以及缓存和异步交接时的复制边界。324 收藏 -
Go exec.CommandContext 取消后,不能只看 ctx.Done。本文用 Wait 确认子进程退出,并区分超时、主动取消、非零退出和 WaitDelay 边界。323 收藏 -
Go TLS 客户端遇到证书错误时,直接设置 InsecureSkipVerify=true 只会关闭证书链和主机名校验。本文按错误分支拆开 ServerName、RootCAs 与 VerifyConnection,给出保留安全校验的排查和配置方式。323 收藏 -
Golang · Go教程 | 3天前 | 连接池 · Go教程 · net/http · HTTP客户端 · Go net/http Client Go Transport拆分 Go多上游HTTP客户端 Go连接池隔离 Go HTTP代理配置
Go net/http 访问多个上游时,不要直接改全局 DefaultTransport。本文用公共基线加独立 Transport 的方式拆分代理、TLS、连接池和超时边界。323 收藏 -
用 Go log/slog 在请求入口统一绑定 trace_id、request_id 和路由字段,再通过 context 传到业务函数,保持 JSON 日志可检索并避开敏感数据泄露。322 收藏