Go语言技术文章
-
Go 使用 RawStdEncoding 解码时出现填充错误,通常不是数据必须补等号,而是发送方和接收方采用了不同的 Base64 约定。本文用最小示例区分 StdEncoding 与 RawStdEncoding,并给出错误定位和测试边界。155 收藏 -
用 Go time.Time.AppendFormat 把时间文本追加到已有 []byte 缓冲区,说明返回值、循环复用容量、布局时区和基准判断边界。155 收藏 -
Go 出现 import cycle 时,问题不是 init 顺序,而是包依赖图已经形成闭环。本文从最小循环、共享类型下沉、消费方接口和组合根四个角度,整理一套可以长期维护的拆包方法。155 收藏 -
Go unicode/utf8.FullRune 用来判断字节切片开头是否已经收齐一个 UTF-8 编码。本文用分块读取场景说明它与 DecodeRune、Valid 的边界、尾部残片和错误字节处理方式。155 收藏 -
Go panic 不是另一种 error 返回值,而是会沿当前 goroutine 调用栈展开的控制流。本文说明 panic、defer、recover 与 error 的职责边界,以及如何只在明确边界处恢复并转换为错误。155 收藏 -
Zap 的 AddCallerSkip 不是修改日志内容,而是调整调用位置计算时跳过的栈帧数量。本文用包装器层数解释 skip 偏小、偏大和重构后的归因风险,并给出集中配置方式。155 收藏 -
Go go toolchain 看起来没有释放时,先区分命令进程与模块缓存。本文按工具链选择、GOMODCACHE、GOCACHE 和进程观察逐层排查,说明什么时候清理缓存,什么时候应该继续查启动器或 CI 任务。155 收藏 -
Go 的 encoding/csv.Reader 不会自动移除文件开头的 UTF-8 BOM,首个字段可能因此多出不可见字节。本文用流式包装只检查前三个字节,说明如何保留普通文件、处理短输入并继续使用字段数检查。154 收藏 -
Go range 遍历结构体切片时,第二个变量通常是当前元素的值拷贝,修改它不会写回原切片。本文用最小示例说明原因,并给出按索引写回、只读值变量和指针切片三种选择。154 收藏 -
用 Go 1.24+ 的 os.OpenInRoot 在固定目录内打开外部传入文件名,理解 ..、绝对路径、符号链接、错误处理和版本边界,避免把 filepath.Join 当成安全隔离。154 收藏 -
Go text/template.ParseFiles 按文件基名建立模板名称,包级调用的根模板取第一个文件,方法调用还要注意 New 名称与 Execute 的关系。本文用多文件、同名覆盖和 ExecuteTemplate 示例固定调用边界。154 收藏 -
讲清 Go bufio.Reader.ReadByte 的 byte、error 返回约定,演示如何区分有效字节、io.EOF 与其他读取错误,并处理缓冲状态和 UnreadByte 边界。154 收藏 -
QueryContext 取消后连接仍显示存在,通常是连接被归还连接池而不是立即断开;只有 Rows 未关闭、驱动不响应取消或专用连接未 Close 时,才需要继续排查资源占用。154 收藏 -
介绍go-multibase如何根据文本前缀恢复编码类型和原始字节,给出Base16与Base64url往返示例,以及长度限制、编码白名单和业务解析边界。154 收藏 -
Go go-chart可将配对数值序列编码为PNG折线图。本文用完整示例解释ContinuousSeries、内存渲染与文件保存,并处理空数据、坐标顺序和写入错误。154 收藏