Go教程技术文章
-
Go archive/tar 的 Header.Format 是 Reader.Next 对归档格式的尽力判断,可能返回 USTAR、PAX、GNU 或 Unknown。本文说明如何读取格式、比较能力边界,并在重新写入时显式选择兼容格式。136 收藏 -
Go archive/tar 遇到长文件名时应选择 PAX 格式。本文用 Writer 与 Reader 说明 FormatPAX、Header.Name、Next 和 USTAR/GNU 的取舍。194 收藏 -
Go archive/zip 里 Writer.Close、OpenReader.Close 和条目 ReadCloser 不是同一个关闭边界。本文用写入与读取示例说明如何收口资源,并在完整读取条目后捕获 zip.ErrChecksum、io.ErrUnexpectedEOF 等错误。452 收藏 -
Go archive/zip 遍历 ZIP 时,文件名应读取 FileHeader.Name,目录条目通常以斜杠结尾。本文用 OpenReader 和 Reader.File 区分文件、目录与路径边界,并说明 Open、Close 和 ErrInsecurePath 的处理方式。120 收藏 -
使用 Go hash/crc32 在分块读取文件、上传内容或消息流时持续计算 CRC32,掌握 Sum32、Sum 和 Reset 的用法与边界。383 收藏 -
Golang · Go教程 | 2天前 | 标准库 · JSON · Go教程 · encoding/json · Go encoding/json bytes.Buffer json.Compact JSON压缩
Go json.Compact 用已有 JSON 字节和 bytes.Buffer 生成紧凑 JSON,只删除结构中的无意义空白,不改动字符串值。本文说明最小用法、错误处理、Buffer 复用,以及它和 json.Indent、Marshal、HTMLEscape 的边界。214 收藏 -
Go runtime/asan 实际对应 go build -asan 与 AddressSanitizer 的协作入口,适合排查 cgo 连接的 C/C++ 内存问题。本文说明构建方式、报告阅读、泄漏开关和平台限制。304 收藏 -
Go 的 json.Valid 接收 []byte 并返回 JSON 语法是否有效的布尔值,适合做输入预检,但不负责把字段映射到结构体。本文用一个边界排查场景说明 Valid 与 Unmarshal 的分工。203 收藏 -
Golang · Go教程 | 2天前 | 标准库 · JSON · Go教程 · encoding/json · Go encoding/json Prefix JSON格式化 indent json.MarshalIndent
Go json.MarshalIndent 会先把 Go 值编码为 JSON,再用 prefix 和 indent 排版嵌套结构。本文区分两个参数的职责,说明接口、配置和日志场景的选型,并补充错误处理、json.Indent 与 HTML 转义的边界。204 收藏 -
Golang · Go教程 | 2天前 | 标准库 · JSON · go · encoding/json · Go bytes.Buffer Prefix json.Indent JSON格式化 indent
Go json.Indent 会把已有 JSON 字节按对象和数组层级排版到 bytes.Buffer。本文区分 prefix、indent、字符串内容与输入空白边界,并说明何时应改用 json.MarshalIndent。487 收藏 -
time.Duration 以 int64 纳秒保存,和整数相乘时不会自动报告溢出。本文从边界值、四种符号组合和 MinInt64 特例出发,给出乘法前检查并返回 overflow 标记的安全写法。392 收藏 -
Golang · Go教程 | 2天前 | 标准库 · csv · Go教程 · csv Go error FLUSH CRLF encoding/csv Writer.UseCRLF Windows换行
Go encoding/csv 的 Writer 默认使用 LF 换行;需要兼容依赖 CRLF 的 Windows 工具时,应在第一次 Write 前设置 UseCRLF=true,并在写入后正确调用 Flush 和 Error。本文按接口契约说明设置时机、错误边界和跨平台取舍。103 收藏 -
Golang · Go教程 | 2天前 | 标准库 · 错误处理 · IO · Go教程 · Go eof io.Pipe CloseWithError PipeReader PipeWriter.Close
Go io.Pipe 写端正常 Close 后,读端读完剩余数据会收到 io.EOF;如果生产过程失败,应使用 CloseWithError 传播真实错误。本文对比三种关闭入口,给出带错误处理的读取循环和关闭边界。321 收藏 -
Go bufio.Scanner 默认按行切分,空行会作为长度为零的 token 返回;循环结束后要检查 Err 区分正常 EOF、底层读取错误和 token 过长。本文给出空行策略、Buffer 配置和按行读取代码的迁移清单。329 收藏 -
Go 的 bufio.Scanner 默认 token 缓冲有限,读取超长日志行时可能提前停止。本文用 Scanner.Buffer 调整初始缓冲和最大上限,说明调用时机、错误处理,以及何时应改用 bufio.Reader。365 收藏