Go语言技术文章
-
io.Writer 只保证 Write([]byte),不能直接假设目标一定有 WriteString。本文用 io.StringWriter 和 io.WriteString 说明能力判断、兼容回退,以及包装器带来的边界。252 收藏 -
通过显式提取 Context 中的请求标识并用 Logger.With 派生请求日志器,为多条 slog 日志复用上下文字段。提供完整 Go 示例,解释 InfoContext、全局默认日志器、字段缺失与重复键的边界。252 收藏 -
Go mod tidy 按当前模块源码与工具声明整理依赖,不把配置字符串或安装记录当作导入关系。通过模块归属、驱动空白导入、工具声明和构建标签解释依赖删除,并给出对应维护方法。252 收藏 -
本文用一个小型 Go 工具说明 time.Time.UnixMilli 如何生成毫秒时间戳,解释 UnixMilli 与 Unix 的单位区别、1970 年以前的负值、双向还原以及 JSON 和数据库边界的统一约定。252 收藏 -
Go 1.27 已移除 asynctimerchan。本文区分环境配置失效与模块指令报错,以单所有者计时器示例说明 Reset、Stop、排空及并发边界,避免继续依赖旧开关。252 收藏 -
通过动态比较小函数说明Go reflect.Value.Comparable与Type.Comparable的差异,处理接口字段、nil、不同类型及不可比较输入,区分可比较、相等和排序能力。252 收藏 -
用 Gock 为指定主机注册 HTTP mock,说明主机匹配、客户端拦截、未匹配请求策略和测试清理边界。252 收藏 -
从原始字符串直接构造 shopspring/decimal 小数,比较字符串、浮点数和整数入口,提供带错误处理的完整示例,并区分精确数值、业务约束和固定小数显示。252 收藏 -
Go go-flags 遇到未知参数时,可以用 IgnoreUnknown 将未知选项保留在 ParseArgs 的剩余切片中;如果需要生产环境的白名单边界,则使用 UnknownOptionHandler 自定义转发规则。252 收藏 -
说明 Go bloom/v3 的 Merge 为什么要求两个 Bloom 过滤器使用相同的 m 和 k,并给出分片创建、错误处理、容量规划与并发边界示例。252 收藏 -
Go time.Time.Compare 返回 -1、0、1,适合把两个时间点的先后关系统一接入排序和状态判断。本文说明返回值、与 Before/After/Equal 的选择、排序回调以及零值和单调时钟边界。252 收藏 -
Go time.Time 用 == 比较时,Location 和单调时钟读数也可能参与比较。本文按调用方需求区分 Equal 与结构体比较,处理时区、序列化和精度边界。252 收藏 -
jpeg.Decode 成功只保证返回 image.Image,并不保证具体类型为 YCbCr。本文比较接口处理、带 ok 的断言和 RGBA 转换,说明迁移方式及内存成本。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 收藏