Go教程技术文章
-
比较大字节序列时,已有 []byte 就直接使用 bytes.Equal,不必先转换成 string。本文说明它的判断边界、与前缀和排序 API 的区别,以及性能和并发注意事项。211 收藏 -
Go database/sql 的 sql.DB 是连接池。需要让一组操作落在同一个数据库会话时,可以用 DB.Conn 获取独立连接;操作结束必须调用 Conn.Close 将连接归还池中,并用上下文控制等待时间。209 收藏 -
围绕 time.Ticker 的动态改周期、永久停止和停止后复用,讲清 Reset、Stop 与 C 通道之间的调用顺序,避免重复创建和并发竞态。208 收藏 -
Go netip.ParseAddrPort 可以把带数字端口的 IPv4 或 IPv6 文本解析为 AddrPort,再通过 Addr 和 Port 读取结构化结果。本文说明方括号、非法输入、主机名和 SplitHostPort 的边界。208 收藏 -
Golang · Go教程 | 23小时前 | go · xml · encoding/xml Decoder.Token Go XML Token Decoder.Skip StartElement
围绕 encoding/xml.Decoder.Token 讲清混合 XML 节点的顺序读取、StartElement 分派、CharData 处理和 Skip 跳过嵌套子树,给出可复用的 Go 遍历函数与边界处理方式。208 收藏 -
ServeMux 的匹配不是简单比较路径字符串,而是综合方法、主机和路径,并按请求集合的具体程度选择模式。本文用请求生命周期拆解通配符、优先级、405、尾斜杠和 Go 1.22 兼容边界。207 收藏 -
用 go/parser 生成 Go AST,再用 ast.Preorder 以迭代器形式完成深度优先前序遍历;同时比较 Inspect 与 PreorderStack 的控制边界,并处理解析错误、节点筛选和源文件位置。206 收藏 -
Go PGO 的关键不是随便拿一份 CPU profile,而是让 profile 代表真实工作负载。本文从采集范围、统一采样窗口、多实例合并到 default.pgo 和 -pgo 构建,整理一套可以持续更新的准备方法。205 收藏 -
Go netip.Prefix 表示一个 CIDR 网段,但 Addr 可能仍保留主机位。本文用 Masked 得到规范化起始地址,再按 IPv4 与 IPv6 的位数计算最后地址,说明无效前缀、单地址前缀和地址族边界。204 收藏 -
Go runtime/metrics 的 Value 不能一律按 uint64 读取,应先依据 Description.Kind 选择 Uint64、Float64 或 Float64Histogram;本文整理 KindBad、未知类型和稳定读取流程。203 收藏 -
Go multipart 上传要同时限制请求总大小和解析内存:MaxBytesReader 负责入口上限,ParseMultipartForm 负责内存与临时文件取舍,再把超限统一返回 413 并清理资源。201 收藏 -
用一个实现 io.Reader 的限速包装器接入 io.Copy,让文件或请求体的复制链路按字节速率发送,文章同时说明读取粒度、突发流量、错误处理和并发复用边界。200 收藏 -
Go token.File.SetLines 返回 false,通常不是 API 随机失败,而是行首偏移没有满足严格递增、范围小于文件长度等约束。本文用一组可定位的判断方法说明如何构造行偏移表,并把它接回 Pos、Line、Offset 与 Position 查询。200 收藏 -
Go 的 ResponseController.EnableFullDuplex 允许 HTTP/1 Handler 在请求体尚未结束时交错读取与写响应,但它并不 Hijack 底层连接。本文给出逐块读取、逐块确认的完整写法,并说明包装器、截止时间、HTTP/2 与代理缓冲边界。199 收藏 -
Go 用 url.JoinPath 拼接动态资源路径时,先区分单个路径段和多级路径,再用 PathEscape 处理动态值,避免斜杠、空格和路径清理行为带来编码错误。199 收藏