Go教程技术文章
-
Go 的 DisallowUnknownFields 适合封闭、可控的 JSON 写接口,用来尽早发现拼写错误;面对第三方 webhook 和可扩展 payload 时应谨慎开启。125 收藏 -
Decoder.InputOffset 记录的是解码器当前位置,不一定就是坏字段。处理 JSON 解析失败时,先读取 SyntaxError.Offset,再用 InputOffset 和附近字节片段缩小排查范围。201 收藏 -
Go 使用 bufio.Writer 写文件时,Flush 成功并不等于关闭顺序正确。本文用最小示例拆开 Write、Flush、Close 三个阶段,定位空文件、defer 逆序和错误被覆盖等常见问题。435 收藏 -
Go 的 bufio.Reader.Peek 只观察并不推进读取位置。本文用固定协议头示例说明如何先判断、再精确消费,处理 ErrBufferFull、短输入和预览切片生命周期,避免头部丢失或重复读取。367 收藏 -
io.MultiWriter 按顺序把同一份数据写入多个目标;中间目标失败时不会回滚或继续写。本文说明如何判断部分写入、记录失败目标并设计幂等补偿。337 收藏 -
io.LimitReader 达到上限后也会返回 EOF,无法单独证明输入是否超长。本文用 limit+1 探测窗口区分自然结束、超长截断和底层读取错误,并给出可复用的 Go 封装。232 收藏 -
Golang · Go教程 | 2星期前 | 流式处理 · Go教程 · CloseWithError Go io.Pipe Go 流式上传 json Encoder 请求体 NewRequestWithContext
用 Go io.Pipe 把编码器输出直接连接到 HTTP 请求体,讲清并行启动、EOF、CloseWithError、context 取消和上传重试边界。310 收藏 -
讲清 filepath.Rel 返回 .. 时的越界判断,给出跨平台的 Go helper,并说明 filepath.IsLocal 与 os.OpenInRoot 的适用边界。332 收藏 -
用 Go filepath.WalkDir 按扩展名统计普通文件,说明目录内符号链接、错误回调、SkipDir、大小写和根路径链接的边界。478 收藏 -
Go os.CopyFS 复制 embed.FS 时,目录按 0o777 创建并受 umask 影响,文件按 0o666 加源文件执行位创建;本文说明权限检查、已有文件和跨平台边界。124 收藏 -
Go 中用 os.OpenFile 创建唯一文件时,O_EXCL 必须和 O_CREATE 一起使用。本文给出错误判断、关闭处理与并发验收指标,避免已有文件被覆盖或截断。482 收藏 -
os.WriteFile 会先打开并截断已有文件,写入中途失败可能留下残缺内容。本文解释权限错误的判断方法,并用同目录临时文件加替换保护原文件。118 收藏 -
Go 文件读取不是简单比较 API 名称:完整内容且能放进内存预算时用 os.ReadFile,只取固定范围或需要随机访问时用 File.ReadAt;本文用文件大小、访问模式和短读处理给出判断清单。115 收藏 -
unsafe.String 只把一段连续字节按指定长度解释为字符串,不会替你检查对象类型、所有权或 UTF-8。本文从 []byte 的正确入口讲清指针、长度、可修改性和生命周期边界,并给出该复制时的判断方式。490 收藏 -
Go unsafe.Slice 的长度参数是元素数,不是 C 缓冲区字节数。本文用 cgo 示例说明如何校验指针、换算长度、维持 C 内存生命周期,并避开布局和 Go 指针陷阱。495 收藏