Go教程技术文章
-
Go 泛型排序的关键不是把所有类型都塞进 any,而是用 type set 明确比较能力。本文从 Price、ProductName 等业务命名类型出发,说明 ~ 底层类型约束、< 与 > 的适用边界,并给出标量排序与结构体字段排序的选择方法。323 收藏 -
Go 读取动态 GIF 应使用 gif.DecodeAll;返回值的 Image 与 Delay 按下标对应,Delay 单位是百分之一秒,换算时乘 10 毫秒。322 收藏 -
围绕 Go NotifyContext 解释退出通知、独立清理超时和主协程等待,给出 HTTP 服务示例,并说明 stop、二次信号和清理顺序的边界。322 收藏 -
Go bbolt 按前缀扫描键时,先用 Cursor.Seek 定位,再用 bytes.HasPrefix 控制边界,并处理 bucket 缺失、子桶项和事务内字节切片生命周期。321 收藏 -
Go context发生取消时,ctx.Err()只能告诉你状态,context.Cause(ctx)才能保留首次取消的具体原因。本文用WithCancelCause和超时cause建立一套可排查的错误归因方法。320 收藏 -
Go 标准库 archive/tar 能读取 GNU/PAX 稀疏归档,但 Writer 当前不支持编码稀疏文件,因此不存在一组 Header 字段能直接开启稀疏写入。本文解释 Size、Typeflag、Format、PAXRecords 的边界,并给出普通条目和 GNU tar --sparse 两种可靠方案。320 收藏 -
Golang · Go教程 | 1星期前 | JSON · go · 兼容性 · encoding/json/v2 未知字段 jsontext.Value MarshalerTo UnmarshalerFrom
encoding/json/v2 可用 json:",embed" 将未知成员收进 map[string]jsontext.Value。实现自定义 MarshalerTo 时必须在线形态中显式携带该回退字段,本文对比三种方案并给出可复用的成对编解码实现。318 收藏 -
围绕 Go slices.BinarySearch 讲清升序切片的查找、未命中插入点、重复值与空边界,并用 BinarySearchFunc 处理结构体字段排序。317 收藏 -
Go multipart/form-data 可以在一次请求中同时上传文件和重复字段。本文用 multipart.Writer 构造请求,演示服务端从 Form.Value 与 Form.File 读取切片,并说明 boundary、资源关闭和大小限制。317 收藏 -
以检索结果页说明 Go html/template 的上下文转义、普通模板函数与可信片段,给出固定HTML标记的完整示例,并明确模板源码、富文本和URL的信任边界。317 收藏 -
讲清 Go net/http CrossOriginProtection 如何放进已有恢复、日志、认证和路由中间件链,配置可信 Origin、自定义 403 拒绝处理和精确例外,并区分它与 CORS 的职责。316 收藏 -
围绕 testing.F、f.Add、f.Fuzz 和 testdata/fuzz,说明 Go fuzz 测试怎样限制参数边界、控制探索预算,并把失败输入沉淀为普通 go test 可复现的回归样例。316 收藏 -
Go 的 math.Frexp 可以把 float64 拆成归一化尾数和二进制指数,math.Ldexp 再将两者重建为浮点数。本文给出最小写法、配对关系和特殊值边界。316 收藏 -
用 Go 的 reflect.VisibleFields 和 StructTag.Lookup 生成字段映射,再以 reflect.Type 为键缓存不可变元数据。文章给出完整实现、并发取舍、嵌入字段处理和实际取值示例。315 收藏 -
讲解如何把 Go 旧式 b.N 基准测试迁移到 testing.B.Loop,处理一次性准备、循环内输入重置、计时器控制、自定义指标和结果对比,并说明不能混用的边界。315 收藏