Go教程技术文章
-
Go json.Decoder 解码到 any 时,JSON 数字默认会落到 float64。本文说明如何用 UseNumber 保留为 json.Number,再按业务边界解析成 int64 或 float64,避免大整数提前丢失精度。253 收藏 -
手工创建 go/types.Interface 时,先准备好显式方法和嵌入类型,等嵌入类型完全定义后调用 Complete,再读取 NumMethods、Method 或方法集。本文按构造、完成、查询顺序说明方法集计算时机与重复方法边界。253 收藏 -
io.Writer 只保证 Write([]byte),不能直接假设目标一定有 WriteString。本文用 io.StringWriter 和 io.WriteString 说明能力判断、兼容回退,以及包装器带来的边界。252 收藏 -
通过显式提取 Context 中的请求标识并用 Logger.With 派生请求日志器,为多条 slog 日志复用上下文字段。提供完整 Go 示例,解释 InfoContext、全局默认日志器、字段缺失与重复键的边界。252 收藏 -
本文用一个小型 Go 工具说明 time.Time.UnixMilli 如何生成毫秒时间戳,解释 UnixMilli 与 Unix 的单位区别、1970 年以前的负值、双向还原以及 JSON 和数据库边界的统一约定。252 收藏 -
通过动态比较小函数说明Go reflect.Value.Comparable与Type.Comparable的差异,处理接口字段、nil、不同类型及不可比较输入,区分可比较、相等和排序能力。252 收藏 -
用 Gock 为指定主机注册 HTTP mock,说明主机匹配、客户端拦截、未匹配请求策略和测试清理边界。252 收藏 -
从原始字符串直接构造 shopspring/decimal 小数,比较字符串、浮点数和整数入口,提供带错误处理的完整示例,并区分精确数值、业务约束和固定小数显示。252 收藏 -
Go time.Time.Compare 返回 -1、0、1,适合把两个时间点的先后关系统一接入排序和状态判断。本文说明返回值、与 Before/After/Equal 的选择、排序回调以及零值和单调时钟边界。252 收藏 -
Golang · Go教程 | 3星期前 | HTTP · go · 服务端 · Go net/http http.MaxBytesReader http.MaxBytesError HTTP 413
Go 服务端限制请求体不能只看 Content-Length。本文用 http.MaxBytesReader 把上限放在读取入口,通过 errors.As 识别 *http.MaxBytesError,并将超限请求稳定转换为 413,同时说明分块请求、MaxBytesHandler 和提前拒绝的边界。251 收藏 -
Go 的 slices.BinarySearch 返回匹配索引或有序插入位置。本文用最小示例说明升序约束、found 判断、重复值边界和 BinarySearchFunc 的结构体查找写法。251 收藏 -
Go OpenFile 用创建标志和八进制权限位控制新文件。本文用拒绝覆盖的完整示例解释0600、写入和关闭错误,以及已有文件、umask和Windows权限模型的差异。251 收藏 -
Go select 可以把结果 channel 与 ctx.Done() 放在同一个等待边界里:结果先到就返回结果,超时或上游取消先到就停止等待。本文说明实现模式、竞态边界和资源清理。251 收藏 -
围绕 Go jsontext Token 读取 JSON 数字,说明 Kind 判断、Int/Uint/Float 选择、语法与范围错误、向零截断,以及 Decoder 返回 token 的 Clone 生命周期边界。251 收藏 -
Go Kong 可以用 env 标签指定环境变量,也可以用 DefaultEnvars 自动生成环境变量名。本文拆解默认值来源、覆盖顺序和空值边界。251 收藏