Go教程技术文章
-
用 Go 的 encoding/hex 把二进制 ID 转成稳定的小写十六进制文本,并说明 DecodeString 的输入边界、错误处理和预分配写法。477 收藏 -
Go 处理 URL 参数中的无填充 base64 时,关键是按字母表和填充约定选择 RawURLEncoding,而不是把所有输入都交给 StdEncoding。本文给出判断表、解码代码和兼容排错方法。405 收藏 -
Go 计算大文件 SHA-256 时,不必先把文件读成 []byte。本文用 crypto/sha256.New、os.Open 和 io.Copy 边读取边累计哈希,并说明文件关闭、输出编码、空文件和重复读取的边界。132 收藏 -
Go TLS 客户端使用 x509.NewCertPool 和 AppendCertsFromPEM 从内存加载自定义 CA,并通过 tls.Config.RootCAs 只按指定证书池验证服务器。343 收藏 -
用 net.Resolver.LookupHost 配合 context.WithTimeout 给 DNS 查询单独设定预算,并通过 DNSError、Timeout、Temporary 和上下文错误区分重试、取消与域名不存在。103 收藏 -
使用 Go net/netip.ParseAddr 校验 IPv4、IPv6 和 IPv4-mapped IPv6,再用 Is4In6、Unmap 与 String 输出稳定的规范地址。407 收藏 -
用 Go 的 url.Values、Has、Get 和 ParseQuery 区分查询参数的缺失、空值、重复值与编码错误,并说明 Add、Set、Encode 的写回规则。296 收藏 -
用 Go 的 multipart.Reader 逐个接收多个上传文件,配合 MaxBytesReader 和 LimitReader 控制请求总量、单文件大小,并正确处理 EOF、超限和临时文件清理。441 收藏 -
Golang · Go教程 | 1星期前 | HTTP · go · sse · 流式响应 · Go EventSource SSE Server-Sent Events http.Flusher ResponseController
Go 写 SSE 接口时,事件格式、Flush 和连接关闭必须同时成立:消息用空行分隔,写入后显式刷新,并监听请求 Context 的取消信号。本文比较 http.Flusher 与 ResponseController.Flush,给出一段能处理写入错误和客户端断开的最小实现。491 收藏 -
用 Go 的 httptest.ResponseRecorder 测试 Handler 输出,分别检查状态码、响应头和响应体,并解释 Result、Code 与 HeaderMap 的使用边界。367 收藏 -
用 httptest.NewServer 搭建三段重定向链,演示默认客户端跟随、CheckRedirect 记录每一跳,以及 ErrUseLastResponse 停止跟随时的断言和 Body 清理。240 收藏 -
Go 的 HTTP 客户端连接池关键不在于每次请求都新建 Client,而在于长期复用同一个 Transport,并分别理解空闲连接、主机总连接和空闲回收时间。本文给出可直接改造的配置与边界。482 收藏 -
用 Go 1.22+ 的 net/http ServeMux 集中注册 /api/v1 公共前缀路由,讲清方法模式、动态段、子树斜杠和冲突边界。292 收藏 -
Go HTTP 接口接收 JSON 时,应在 json.Decoder 读取前用 http.MaxBytesReader 限制请求体大小,并区分 MaxBytesError、JSON 语法错误、未知字段和尾部多余数据。本文比较不同限制方式,给出可直接改造的 Handler 示例与上线决策表。133 收藏 -
用 Go channel、固定数量 worker 和 WaitGroup 搭建有界并发工作池,厘清任务投递、队列容量、关闭责任与结果收口,避免无限创建 goroutine 和 send on closed channel。123 收藏