Go教程技术文章
-
Golang · Go教程 | 2星期前 | 标准库 · 泛型 · 资源管理 · 迭代器 · Go教程 · 资源释放 iter.Seq range over function Go泛型迭代器 iter.Pull
Go 1.23 引入的 iter.Seq 让自定义序列可以直接配合 for range,但提前 break 与 iter.Pull 的 stop 处理决定了资源能否及时释放。本文用分页读取与筛选场景拆解 push 迭代器、pull 迭代器和停止边界。495 收藏 -
讲清 Go json.Decoder 读取连续 JSON 值时如何区分正常 EOF、记录中途截断、语法错误和类型错误,并用 InputOffset 记录可恢复的失败位置。495 收藏 -
订单同时有 paid、shipped、cancelled 三个布尔字段时,状态组合很快会失控。本文用 Go 实现一个显式订单状态机,梳理合法迁移、拒绝非法操作、落库与并发更新的边界。494 收藏 -
在泛型函数里拿到 T 的 reflect.Type,不必再构造一个可能带副作用的零值,也不要把接口动态类型误当成泛型参数。本文用 reflect.TypeFor[T]() 对比旧写法,说明指针、接口和 nil 的边界,并给出可验证的类型检查代码。494 收藏 -
json.Decoder.Decode 成功一次,不代表请求体只包含一个 JSON 文档。本文用 Token、第二次 Decode 和 io.EOF 判定尾随数据,拆解单文档接口的校验边界与常见误区。494 收藏 -
Go 的 time.Ticker.Reset 会停止当前节拍并按新周期重新计时。本文用一个动态刷新任务说明 Reset 的调用边界、正数周期校验、慢消费者丢 tick 以及并发读写时应如何组织所有权。494 收藏 -
从最终输出类型、读取需求、Grow 的字节语义和 Bytes 的别名边界出发,说明 strings.Builder 与 bytes.Buffer 在 Go 中如何选择。494 收藏 -
Golang · Go教程 | 2星期前 | 部署 · embed · 模板 · Go教程 · 文件系统 · Go 静态资源 go:embed embed.FS fs.ValidPath template.ParseFS
把 HTML 模板和静态资源随 Go 二进制发布时,embed.FS 能提供只读文件树,但路径仍需遵守 fs.ValidPath 规则。本文从 go:embed、template.ParseFS 到运行时读取,说明目录布局、错误分支和部署验收。493 收藏 -
Go 的 archive/zip 不把操作系统路径直接当作 ZIP 路径使用。本文从相对路径、正斜杠、目录尾斜杠和 Writer.Close 四个边界出发,写一个可复用的 ZIP 构建示例,避免目录条目错位、穿越路径和重复名称。493 收藏 -
Go 的 O_APPEND 负责把写入定位到文件末尾,O_TRUNC 则在打开可写文件时清空已有内容。本文用一个小工具拆解两者组合,给出覆盖写、追加写和安全新建的选择方法。493 收藏 -
Golang · Go教程 | 10小时前 | HTTP · 文件上传 · Go教程 · mime/multipart · 文件上传 Go multipart/form-data mime/multipart 请求体限制
Go 控制 multipart 请求体积不能只调大或调小 maxMemory。本文用 MaxBytesReader 限制总 body,用 ParseMultipartForm 管理解析内存,再用 MultipartReader 和 LimitReader 控制单个 part,补上数量、临时文件和错误处理边界。493 收藏 -
Go container/list 删除异常通常不是链表坏了,而是把 Value 当成 Element、节点来自另一条 List,或遍历时没有先保存 Next。本文按这三类现象给出排查和回归清单。493 收藏 -
Go 的 net/url.URL.Redacted 会像 URL.String 一样重组地址,但只把 User 中的密码替换成 xxxxx。本文用可运行示例拆开 String、Redacted、Password 的边界,避免把脱敏字符串误当作请求地址或以为查询参数也会自动隐藏。492 收藏 -
Go strings.CutPrefix 返回 found=false 时,优先检查前缀是否真的位于字符串开头、大小写和空格是否一致,并正确处理未匹配时原字符串会原样返回的规则。492 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · 并发安全 · Go教程 · net/http · 连接复用 · Go 连接池 header http.Transport.Clone 并发客户端
Go 的 http.Transport.Clone 适合从一份稳定的连接配置派生客户端,但它不会替你合并请求级 Header,也不该被当成共享运行状态的复制器。本文从连接池、Header 隔离和并发改造三个边界拆开 Clone 的正确用法。491 收藏