Go教程技术文章
-
io.LimitReader 达到上限后也会返回 EOF,无法单独证明输入是否超长。本文用 limit+1 探测窗口区分自然结束、超长截断和底层读取错误,并给出可复用的 Go 封装。232 收藏 -
Golang · Go教程 | 1个月前 | 流式处理 · 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 收藏 -
Go 1.22 引入 reflect.TypeFor 后,泛型函数可以直接拿到类型参数 T 对应的 reflect.Type。本文用一个小型类型描述器说明 TypeFor、TypeOf、Kind 和 Implements 的边界。479 收藏 -
reflect.Value.IsZero 判断的是类型零值,time.Time.IsZero 判断的是零时间点。本文拆开值、指针和接口字段的反射入口,给出避免时间字段误判的写法与检查清单。138 收藏 -
Go 反射中 reflect.Value.CanSet 返回 false 时,先用 CanAddr 区分不可寻址的值副本,再用 CanInterface 和字段导出状态识别只读字段;本文给出指针、Elem、字段诊断和安全修复示例。361 收藏 -
Go 的 iter.Pull2 把 Seq2 转成 next/stop 拉取接口。本文用一个可复用示例说明提前 break 时为什么必须调用 stop,以及 defer stop()、ok 判断和并发边界怎么处理。165 收藏 -
用 iter.Seq2[int, error] 同时传出行号和校验错误,说明 range、yield、continue 与 break 的边界,以及 Go 1.23 语言版本要求。140 收藏