Go语言技术文章
-
Go io.NewSectionReader 将 ReaderAt 限制在指定偏移和长度内,掌握 Read、ReadAt、Seek、Size 与 Outer 的边界语义。442 收藏 -
Go http.Request.Write 会把 Request 的请求行、请求头和请求体写成 HTTP/1.1 报文。本文用缓冲区示例说明 URL、Host、Content-Length、分块传输、Body 关闭,以及普通写出和代理写出的区别。442 收藏 -
Go 标准库 net/netip 可以先用 ParsePrefix 解析 CIDR,再调用 Prefix.Contains 判断 IP 是否属于指定网段。本文给出 IPv4、IPv6、地址族不匹配、IPv6 zone 和前缀规范化的实用边界。442 收藏 -
Go go-imap 使用 FetchItemBodySection 描述邮件正文范围,从 FetchItemDataBodySection.Literal 读取分段内容;本文说明 MIME 部件、Partial 字节区间、FetchCommand 消费方式,以及如何交给 go-message/mail 解析正文和附件。442 收藏 -
Go netlink的AttributeDecoder.Type返回基础类型,TypeFlags返回高位标志。通过离线属性示例说明位掩码、网络字节序、Nested与Flag的区别,以及载荷解析约束。442 收藏 -
Go crypto/subtle.ConstantTimeLessOrEq 只适合比较非负且不超过 2^31-1 的 int。本文结合一个小型范围判断封装,说明它的 0/1 返回值、输入边界和与普通 <=、ConstantTimeCompare 的区别。442 收藏 -
Go 的 html/template.URLQueryEscaper 适合把模板参数放进 URL 查询值,但它不是多值参数构造器。本文对照空格、加号、& 和 url.Values.Encode 的输出,给出可复核的写法与边界。441 收藏 -
Go 泛型约束中的 int 只匹配精确的 int 类型,~int 才会接纳底层类型为 int 的命名类型。本文用最小代码和类型集合说明两者差异。441 收藏 -
用 Go 的 multipart.Reader 逐个接收多个上传文件,配合 MaxBytesReader 和 LimitReader 控制请求总量、单文件大小,并正确处理 EOF、超限和临时文件清理。441 收藏 -
iter.Seq2 的 K、V 是按值传给 yield 的,不能靠取 range 变量地址消除复制。本文对比指针返回、ID 句柄和保留值返回,给出生命周期、并发与提前停止的实用边界。441 收藏 -
复用 bytes.Buffer 时,旧数据残留通常是因为写入会追加而不是覆盖。本文用 Len、Cap、Reset 和 Grow 拆开逻辑长度、底层容量与切片别名,给出循环复用、容量阈值和返回值复制的处理方式。441 收藏 -
Golang · Go问答 | 2个月前 | Context · 并发控制 · Go问答 · Go 资源清理 sync.Once context.WithCancel context.CancelFunc
Go 的 CancelFunc 可以被多个 goroutine 重复调用,但这不代表文件、连接和事务清理也天然幂等。本文用统一停止入口、等待工作退出和 sync.Once 设计多入口收尾,说明取消信号与资源释放的边界。441 收藏 -
讲清 Go sync.WaitGroup 的计数快照、Add 与 Wait 的竞态边界,以及动态派生任务和 WaitGroup.Go 的安全用法。441 收藏 -
Golang · Go教程 | 1个月前 | goroutine · Context · Go教程 · 批处理 · 批处理 Timer WithTimeout Go context WithCancelCause 父子取消链
本文用 root、batch、job 三层 Context 组织批处理生命周期,演示系统信号、整批失败和单任务超时的传播边界,并说明如何及时调用 CancelFunc、停止重试 Timer 与 Ticker。441 收藏 -
本文从零实现一个 Go 归档展开小工具:用 os.Root 限制落盘范围,只接受目录和普通文件,并通过路径白名单、文件数量、单文件大小与总展开量控制用户上传风险。441 收藏