Go教程技术文章
-
用 Go 标准库 uuid 包校验外部标识符时,应把长度限制、Parse、规范文本策略、Nil 业务规则、稳定错误响应和安全日志放在同一入口。本文给出路径参数与 JSON 请求的生产化写法。290 收藏 -
Ristretto 不按缓存条目数量限制容量,而是通过 MaxCost 和 Set 的 cost 参数管理总成本。本文用统一成本单位为不同大小的对象分配预算,并说明 Wait、异步写入和淘汰边界。289 收藏 -
用一个可复用的 Go 上传请求构造器讲清 multipart.Writer.SetBoundary 的正确调用顺序、字符与长度限制、Content-Type 同步方式,以及 Close 收尾错误处理。288 收藏 -
Go pem.Decode 找不到下一个 PEM 块时会返回 nil,并把未找到块的整段输入原样放到 rest。本文说明这种设计如何作为终止信号,并给出连续读取多个 PEM 块时避免重复处理和死循环的写法。288 收藏 -
Go 的 JSON 联合字段可以先用 RawMessage 保留 payload,再按 type 选择具体结构体二次解析。本文给出分派结构、错误处理和适用边界。288 收藏 -
说明 Go interface 携带 nil 指针时为什么仍不等于 nil,并用错误返回边界、类型断言和三种状态测试避免 typed nil 误判。287 收藏 -
用一个父子进程示例说明 Go os/exec 的 ExtraFiles 如何把文件传到固定的 3+i 描述符,覆盖子进程读取、关闭时机、EOF 排查与 Windows 不支持边界。287 收藏 -
Go 1.24 的 os.Root 把文件操作约束在指定目录树中,可阻止绝对路径、.. 越界和指向根外的符号链接。本文用可运行示例说明 OpenRoot、MkdirAll、OpenFile 的正确组合及权限、性能和平台边界。287 收藏 -
io.LimitedReader 在额度用完和底层输入结束时都可能返回 EOF,单看错误值无法判断是否超限。本文用 limit+1 探测解释如何区分恰好读满、未达到上限和仍有额外数据,并给出保留内容与纯探测两种写法。286 收藏 -
Go 1.22 起可用 AppendEncode 把 Base64 结果追加到现有切片。本文讲清容量预估、dst[:0] 复用、返回值接收与底层数组所有权边界。285 收藏 -
用 Go Modules 的 replace 将主模块临时指向本地依赖,联调期间确认实际解析路径,提交前用 go mod edit -dropreplace 移除替换并检查模块文件差异。285 收藏 -
Go Colly 的 LimitRule 可以按域名控制同一站点的最大并发、固定间隔和随机间隔。本文结合 Async、Wait、DomainGlob 与多站点规则,说明怎样配置公开页面采集的节奏,并避开 Delay 与 Parallelism 同时设置时的语义误判。285 收藏 -
maps.EqualFunc 允许 Go 比较键类型相同但值类型不同的两个 map。本文用 string 与 []byte 的例子说明比较器写法,并梳理 nil、空 map、缺失键和不可比较值的边界。284 收藏 -
Go netip.Addr.UnmarshalText 可以把配置中的 IPv4、IPv6 文本解析成结构化地址。本文说明空文本、非法输入、IsValid 校验、IPv6 区域标识以及配置结构体接入方式。284 收藏 -
GOPRIVATE只声明私有模块范围,不提供仓库凭据。本文通过直连仓库和内部代理两套临时配置,说明代理、公共校验数据库与认证的独立边界,并归纳CI和缓存相关误区。284 收藏