Go教程技术文章
-
本文用 go.work 连接本地 API 与服务模块,避免 replace 污染 go.mod,并通过 GOWORK=off 测试和分阶段升级保持两个模块独立发布。201 收藏 -
Go multipart 上传要同时限制请求总大小和解析内存:MaxBytesReader 负责入口上限,ParseMultipartForm 负责内存与临时文件取舍,再把超限统一返回 413 并清理资源。201 收藏 -
用 filepath.Rel 的 error 判断两个目录能否建立词法相对路径,说明同路径、子目录、绝对相对混用、Windows 卷名差异以及目录存在性边界。201 收藏 -
Go 处理 Big5 繁体字节时,可以用 x/text/encoding/traditionalchinese.Big5 创建 Decoder 或 Encoder,再配合 Bytes、String、Reader 和 Writer 完成批量或流式转换。本文说明转换方向、错误边界与资源关闭方式。201 收藏 -
Go 中两个 uint32 相乘可能得到 64 位结果,直接用 uint32 相乘只会保留低 32 位。本文结合 math/bits.Mul32 说明 hi、lo 的含义、完整结果的重组方式,以及窄类型乘法最容易出现的误用。201 收藏 -
Go Gonum distuv 的重复抽样关键在于显式管理 math/rand.Source。本文说明 Normal 如何注入固定 seed、Categorical 如何通过构造函数接收 source、不同分布如何隔离随机序列,以及回放、并发和安全随机的边界。201 收藏 -
Go bytes.TrimSpace 会按 Unicode 空白规则去掉字节切片首尾的空白,并保留中间内容。本文说明最小写法、空结果、返回子切片的共享存储边界,以及与 bytes.Trim 等函数的选择。201 收藏 -
用 Go net.Resolver.LookupSRV 查询服务记录,拆解 Target、Port、Priority、Weight 的职责,并给出带超时、可直接交给 DialContext 的地址转换写法。201 收藏 -
线上只拿到一个 Go 二进制时,debug.BuildInfo 可以帮助你还原构建工具链、主模块、依赖模块与 VCS 设置。本文用 ReadFile 和 ReadBuildInfo 组成一套发布验收流程,并说明模块模式、裁剪信息与脏工作区的边界。200 收藏 -
Go 1.22 及以上的 slices.Delete 会清零删除后的尾部元素。本文用指针切片说明为什么必须接住返回值,以及旧写法、切片别名和 Clone 应该怎样处理。200 收藏 -
使用 Go 标准库 multipart.Writer 同时写入普通字段和文件字段,正确关闭 Writer、绑定带 boundary 的 Content-Type,并从资源、输入与审计角度排查上传请求问题。200 收藏 -
Go 的 string 按字节保存,按字节截断中文或表情可能切入 UTF-8 编码中间。本文用 unicode/utf8 设计安全的字节上限切分函数,并说明非法输入、rune 计数和性能边界。200 收藏 -
Go 1.24 引入的 os.Root 可以把文件读写限制在上传目录内。本文对比 filepath.Join、os.OpenRoot 与 os.OpenInRoot 的使用边界,并说明符号链接、平台差异、性能和资源释放。200 收藏 -
用一个实现 io.Reader 的限速包装器接入 io.Copy,让文件或请求体的复制链路按字节速率发送,文章同时说明读取粒度、突发流量、错误处理和并发复用边界。200 收藏 -
Go token.File.SetLines 返回 false,通常不是 API 随机失败,而是行首偏移没有满足严格递增、范围小于文件长度等约束。本文用一组可定位的判断方法说明如何构造行偏移表,并把它接回 Pos、Line、Offset 与 Position 查询。200 收藏