Go教程技术文章
-
Go archive/zip.Writer.Copy 能把已有 ZIP 条目的 raw form 直接搬到新归档,避免未修改内容重复解压和压缩。本文给出重打包示例,并划清 Copy、CreateHeader、CreateRaw 与 Writer.Close 的使用边界。341 收藏 -
Go embed.FS 可以把模板目录编译进程序,再以 fs.FS 的方式交给 ReadFile、ReadDir 和 template.ParseFS。本文从目录布局开始,给出一个可复用的最小示例,并说明路径、匹配规则、错误处理和只读边界。341 收藏 -
用 Go 的 multipart.Reader 逐段接收大文件,把请求体写入临时文件并在边界解析或磁盘失败时可靠清理,配套可运行的上传接口、大小限制与验收方法。340 收藏 -
Go 的 http.Request.Clone 会复制请求的大部分可变结构并替换 context,但 Body 仍是浅拷贝。本文用转发请求和超时取消两个场景,核对 Header、URL、Body 与 context 的安全边界。340 收藏 -
Go 1.26 的实验包 runtime/secret 用 secret.Do 包住处理敏感数据的调用链,清理寄存器和栈上的临时值,并在堆对象失去引用后交给垃圾回收清理。本文说明启用方式、返回值复制、panic 与平台限制。340 收藏 -
当同一个 JSON 接口的内部字段会随 kind 改变时,可以先用 json.RawMessage 保留 payload,再按判别字段选择具体结构体二次解析。本文给出可复用的 Go 分层解析写法,并说明未知类型、空载荷和错误处理边界。340 收藏 -
Go 的 log/slog 可以把 HandlerOptions.Level 设置为 slog.LevelVar,在不重建 Logger 的情况下运行时切换最低日志级别。本文给出完整配置示例,说明 Set、Level、Enabled 的边界,以及多 Handler、并发更新和昂贵参数计算时的处理方式。340 收藏 -
Go tcell 处理键盘事件时,用 Key() 区分 KeyRune 与命名功能键,再用 Str() 读取普通字符;本文补充 Ctrl、Shift-Tab 和终端协议的兼容边界。340 收藏 -
介绍Goja注册Go回调函数的两种写法,使用完整示例说明参数转换、原生FunctionCall、脚本异常接收和运行时并发限制。340 收藏 -
Go 使用 atomic.Uint64 累计独立事件时,需要统一 Add 与 Load 访问并共享对象指针。本文用完整示例说明快照、任务结束、禁止复制及64位对齐,并划清溢出、热点竞争和多字段一致性的边界。340 收藏 -
Go 的 time.Time 既能表示墙上时钟,也可能携带进程内单调时钟。本文用一组最小写法说明 Before、After、Equal、Compare、Sub 的分工,以及序列化、时区转换、== 比较和机器休眠时的边界。340 收藏 -
Go unique.Handle 适合把可比较值规范化后用于快速比较。本文从字符串键的空输入和解析错误出发,说明 unique.Make、Handle 比较、Value 取回与生命周期边界,避免把错误值混进句柄逻辑。340 收藏 -
Go 1.27 让 go test 默认启用 stdversion 检查,用来发现代码使用了高于 go.mod 版本的标准库符号。本文从报错定位开始,说明 go.mod、构建标签和升级边界如何配合,并给出可复现的检查流程。339 收藏 -
Go 的 embed.FS 适合把默认配置随二进制一起发布,但路径写错、覆盖顺序不清和测试读错目录都很常见。本文从目录布局到运行时覆盖,给出可复用的最小实现、验证命令和回滚边界。339 收藏 -
CI 获取 Go 私有模块失败时,不要只把 GOPROXY 改成 direct。先看模块前缀是否命中 GOPRIVATE,再区分 GONOPROXY、GONOSUMDB、私有代理回退规则和非交互凭据问题。339 收藏