Go教程技术文章
-
使用 go/parser 分析 Go 源码时,ParseComments 决定 AST 是否保留注释。本文从 ParseFile、ast.File.Comments 和声明 Doc 注释入手,给出可直接改造的解析示例。413 收藏 -
Go io.TeeReader 会把通过它读取到的字节同步写入另一个 Writer。本文用一个计数 Writer 统计流经 Reader 的字节数,并说明无内部缓冲、写入错误传播、EOF 与部分读取等边界,适合上传进度、摘要计算和流式审计场景。413 收藏 -
用 Go crypto/subtle.ConstantTimeCompare 做密钥或摘要校验时,长度不一致会直接返回 false。本文从源码语义、输入预处理和可复现测试三个角度说明如何避免误判与边界漏洞。412 收藏 -
讲清 Go http.Request.Clone 复制请求并替换目标 URL 的正确写法,覆盖 Host、RequestURI、查询参数和 Body 重发边界。412 收藏 -
Go env -w 会把设置保存为用户级 Go 环境默认值,而命令前的 NAME=VALUE 只影响当前进程。本文用 GOPROXY、GOENV 和 go env -u 说明优先级、适用场景与清理方法。412 收藏 -
filepath.Rel 会按当前操作系统的分隔符、绝对路径和卷名规则计算词法相对路径。本文给出可复用封装,说明不同盘符、绝对与相对混用、ToSlash、符号链接及安全边界,并用表驱动测试验证。412 收藏 -
bufio.Reader.ReadLine 遇到超长文本时会通过 isPrefix 返回多个片段。本文用一个可复用的读取函数说明如何拼接软换行、处理 EOF 与错误,并解释返回切片的生命周期。412 收藏 -
Go JSON 解码后如何保留未知字段?比较 struct、动态 map 与 RawMessage,给出固定字段加扩展容器的完整写法,并解释合并冲突、数字精度、null 与嵌套字段的处理边界。412 收藏 -
用 archive/zip 的 FileInfoHeader 和 CreateHeader 保留 ZIP 条目的 Unix 权限、目录类型与可执行位,并说明读取复核、路径安全和跨平台边界。412 收藏 -
Go 使用 gopkg.in/yaml.v3 读取配置时,应先把默认值写入结构体,再解码 YAML;这样文件中出现的字段会覆盖默认值,省略字段仍保留默认策略。本文还说明显式零值、未知键和严格解码的处理边界。412 收藏 -
用 io.LimitReader、max+1 探测和 http.MaxBytesReader 为 Go ReadAll 设置输入大小上限,区分截断、超限和读取错误。412 收藏 -
filepath.Base 会先去掉末尾路径分隔符,再提取最后一个元素;空路径返回点号,只有分隔符的路径返回单个分隔符。本文用边界表和可复用代码说明这些结果,并区分 filepath 与 path 的使用场景。412 收藏 -
Go io.SectionReader 的 ReadAt 使用 section 内相对偏移,不会推进 Read 使用的当前读取位置。本文说明 base、当前偏移和 limit 的边界,给出定位读取、短读和 EOF 的处理方式。412 收藏 -
Go archive/zip 的 Reader.Open 可以按 fs.FS 的路径语义直接打开 ZIP 成员。本文说明如何使用斜杠路径读取指定文件、关闭返回的 fs.File,并处理成员不存在、前导斜杠、父目录和遍历元数据等边界。412 收藏 -
Gock 可以为同一个 HTTP 方法和路径注册多条模拟规则,并按 FIFO 顺序消费不同响应。本文用 Times(1) 组合状态码与 JSON,说明连续请求、规则耗尽、未匹配判断和清理边界。412 收藏