Go教程技术文章
-
Go 多子命令程序不要把参数全部注册到全局 flag.CommandLine。本文用 flag.FlagSet 为每个子命令划分参数、错误输出和校验边界,并给出可复用的实现骨架。245 收藏 -
用 Go 的 slices.CompactFunc 按结构体字段处理相邻重复数据,说明比较函数如何定义、为什么只保留连续数据中的第一条,以及就地修改和返回值的使用边界。245 收藏 -
用 Go sort.Search 在升序切片中查找 lower bound 插入点,处理重复值、首尾边界和切片扩容移动。245 收藏 -
Go 可以用 io.Pipe 将 ZIP 生成器直接接到 HTTP 请求体,实现边生成边上传而不落整包临时文件。本文给出可取消、可传递错误的完整写法,并说明无缓冲背压、关闭顺序、重试和 Content-Length 限制。245 收藏 -
Go 多层模板迁移到 embed.FS 后,可在启动期解析公共布局,再为每个页面 Clone 独立模板集合并覆盖 content 块。本文给出目录结构、完整渲染器、变更风险与回归清单,避免工作目录依赖和同名定义串页。245 收藏 -
Go 1.25 的 net/http.CrossOriginProtection 可在业务处理器前拒绝非安全的跨站浏览器请求。本文说明判断规则、Handler 接入方式、可信 Origin 配置与兼容边界,并给出适合 Cookie 会话表单写接口的完整示例。245 收藏 -
Go 迁移到 ML-KEM 时,不要把后量子算法简单替换或直接拼接共享秘密。本文以 crypto/mlkem 和传统 ECDH 为例,说明协商、上下文绑定、HKDF 派生与失败即拒绝的组合方式。245 收藏 -
Go 的 encoding/csv 默认按逗号读取 CSV;遇到分号分隔文件,只需在第一次 Read 或 ReadAll 前设置 Reader.Comma = ';'。本文说明合法分隔符、配置时机、固定列数和错误处理边界。245 收藏 -
Go 1.21 起,bytes.Buffer.AvailableBuffer 可以把当前可用容量交给一次短字段追加,再通过紧接的 Write 提交。本文说明它与普通 Write、strings.Builder 的选择边界,以及返回切片的生命周期。245 收藏 -
Go work 用 go.work 把多个独立 Go module 放进同一 workspace,让本地联调可以直接读取模块改动。本文按迁移变更单的方式说明目录、use、模式切换、测试与交付边界。245 收藏 -
Go 拼接 API 根地址和资源路径时,不要靠字符串加斜杠。url.JoinPath 会统一路径分隔符并清理 .、..;如果某个变量本身是一个含斜杠的数据段,再先用 url.PathEscape。245 收藏 -
go tool trace 默认通过本地 HTTP 服务打开 trace viewer。本文解释 localhost:0、:6060、127.0.0.1:6060 和 0.0.0.0:6060 的差别,给出限制在本机回环接口的命令写法。245 收藏 -
Go filepath.IsLocal 适合在拼接用户路径前筛出绝对路径、空路径和父目录路径。本文用原创 Go 示例说明它与 filepath.Clean、filepath.Join 的边界,并解释符号链接、存在性和权限问题为什么仍需额外处理。245 收藏 -
Go generate 可以通过 package 路径、同目录 Go 文件列表以及 -run、-skip 精确缩小生成范围。本文结合注释触发、执行顺序和失败边界,说明如何只对指定包运行代码生成指令。245 收藏 -
Golang · Go教程 | 1天前 | 标准库 · 错误处理 · Go教程 · Go FLUSH bufio.Writer close io.WriteCloser encoding/ascii85 ascii85.NewEncoder
Go ascii85.NewEncoder 按 4 字节块编码,最后不足一块的数据要靠 Close 收尾;如果外层再包 bufio.Writer,应先 Close 编码器,再 Flush 外层缓冲,两个错误都不能忽略。245 收藏