Go教程技术文章
-
os.DirFS 的根目录参数不能是空字符串,文件读取还要区分非法路径、文件不存在和权限错误。本文用 io/fs 的路径约束、errors.Is 和资源关闭写出清晰的异常分支,并提醒 DirFS 不等于符号链接隔离。148 收藏 -
os.DirFS 不接收字节缓冲区。本文用完整 Go 文件摘要示例说明如何在打开文件后复用工作区,并解释 CopyBuffer 快速路径、切片长度、串行所有权和目录访问边界。426 收藏 -
使用 Go os.DirFS 读取目录时,先用 fs.ValidPath 判断输入是否满足 io/fs 名称规则,再根据目录是否可信选择 os.DirFS 或 Go 1.24+ 的 os.OpenRoot。本文区分语法边界与符号链接安全边界,并给出选择表和可运行示例。286 收藏 -
os.DirFS 可以把固定目录暴露为 io/fs,但它不是 chroot 安全边界。本文从最小读取写法、fs.ValidPath 输入约束和符号链接风险讲起,并给出 Go 1.24+ 使用 os.OpenRoot 的安全替代方案。204 收藏 -
Go 的 http.Request.UserAgent 会读取请求中的 User-Agent 字段。本文说明空值处理、日志记录和轻量归类,并划清它与认证、授权和设备识别的边界。345 收藏 -
比较Go database/sql结果集的自动关闭、defer和显式关闭,区分QueryContext、Scan、Err、Close的错误入口,用完整读取函数处理早退、迭代失败和关闭错误。195 收藏 -
用 Go net/http 提供静态文件时,http.FileServer 不会替你决定 Cache-Control。本文通过 handler 包装器区分带 hash 的资源和 HTML 入口,讲清缓存头与条件请求的职责边界。145 收藏 -
用 Go database/sql 调用带 OUT 或 INOUT 参数的存储过程时,掌握 sql.Out、Dest 和 In 的绑定关系,配合 ExecContext 与驱动能力排查,避免输出值无法回写。330 收藏 -
Golang · Go教程 | 18小时前 | Go教程 · Go net/http 反向代理 httputil ReverseProxy NewSingleHostReverseProxy Rewrite SetURL
Go 构造反向代理目标时,应先把后端地址解析成 url.URL,再交给 httputil.NewSingleHostReverseProxy。本文说明 scheme、host、基础路径和查询参数如何参与转发,并比较 Rewrite、SetURL 与旧 Director 的适用边界。435 收藏 -
说明Go cgo中GoString与GoStringN的选择,用完整示例区分NUL文本和带长度数据,讲清复制、C内存释放责任、内嵌零字节与编码边界。365 收藏 -
Go 的 build constraints 不是只看文件里有没有 import C,而是由显式 //go:build、文件名后缀、目标平台和 cgo 是否启用共同决定文件是否进入包。本文用一对互补实现说明纯 Go 与 cgo 文件的选择规则、跨编译边界和 go list 排查方式。381 收藏 -
Go linkname 会绕过未导出声明的封装。本文从需求、符号签名、内存布局、Go 版本、链接器、目标架构和回滚路径几个方面说明使用前必须明确的边界。177 收藏 -
Go 1.21 之后,go 命令可以按项目要求自动切换工具链。本文用 GOTOOLCHAIN=local 固定当前捆绑版本,说明环境变量优先级、go.mod 约束、local 与 auto 的差异,以及更高版本要求下如何处理。422 收藏 -
Golang · Go教程 | 18小时前 | Go教程 · 模块管理 · Go 离线构建 go.work go mod vendor vendor/modules.txt go work vendor Go工作区
Go work vendor 适合为 go.work 定义的多模块工作区生成共享 vendor 依赖目录。本文说明工作区边界确认、vendor 生成、离线构建入口以及 go.work、go.mod 与 vendor/modules.txt 的一致性排查,并区分 go work vendor 与 go mod vendor 的适用场景。374 收藏 -
Go 模块发布后发现严重问题时,可以用 retract 标记单个版本或闭区间,让后续版本选择避开它,同时保留已有项目的可复现构建。本文说明 go.mod 写法、承载版本、go list 查询与旧工具链边界。483 收藏