Go教程技术文章
-
Go Scanner 默认 token 缓冲约为 64 KiB,超长日志行会让 Scan 停止。本文说明如何在首次 Scan 前设置 Buffer、如何处理 Err,以及何时改用 bufio.Reader。266 收藏 -
Go 的随机定位能力不是所有 Reader 都具备。本文用 io.Seeker 和 ReadSeeker 讲清接口断言、SeekStart/SeekCurrent/SeekEnd、返回偏移、越界与资源关闭边界,并给出不支持定位时的降级策略。355 收藏 -
用 Go time.Time.AppendFormat 把时间文本追加到已有 []byte 缓冲区,说明返回值、循环复用容量、布局时区和基准判断边界。155 收藏 -
Go bytes.Buffer 的读写状态混乱,通常来自把 unread 区域、写入追加和 Bytes 返回的别名混在一起。本文用 Len、Cap、Available 和最小代码示例说明如何分离读写阶段、处理别名、复用缓冲区并定位 EOF。123 收藏 -
本文用 Go 1.23 的 iter.Seq 和 iter.Seq2 讲清 range over func 的回调迭代器接入方式,覆盖 yield 停止信号、资源清理、Seq2 与旧版本兼容边界。117 收藏 -
Go select 不会自动超时,需要把 time.After 或 time.NewTimer 放进 select,并同时处理结果、通道关闭、context 取消和后台发送阻塞。本文用原创示例说明一次等待、循环复用和生产环境的收尾边界。203 收藏 -
Go mime.TypeByExtension 需要传入带点的文件扩展名,未知映射返回空字符串,并可能受到系统 MIME 数据影响。本文从文件名提取、大小写处理、自定义映射和上传安全边界四个方面说明如何正确使用。456 收藏 -
Go slog.Handler 的级别筛选可以先用 HandlerOptions.Level 完成固定阈值,再用 Enabled 和 LevelVar 实现可调整策略。本文用最小示例说明过滤位置、代理方法和常见误区。276 收藏 -
Go 反射更新结构体字段时,reflect.Value.SetZero 可以把可设置值恢复为其类型零值。本文用字段更新场景说明 CanSet、指针 Elem、未导出字段和 map/slice 清空之间的边界。388 收藏 -
Go 1.25 的 net/http 提供 CrossOriginProtection,可以在 Handler 层拒绝非安全的跨源浏览器请求。本文从保护范围、可信 Origin、拒绝处理器和认证边界四个方面给出一套可落地的写接口接入方式。464 收藏 -
Go 本地 HTTPS 测试需要自签名证书时,可以用 crypto/x509.CreateCertificate 直接生成带 localhost SAN 的证书。本文比较三种方案,并拆解模板、签名者、DER 与 PEM 的关系。233 收藏 -
Go regexp.Regexp.NumSubexp 统计的是正则表达式中的捕获组数量,不包含完整匹配本身。本文用普通组、命名组和非捕获组说明结果下标怎样对应。269 收藏 -
Go httptrace.GotConnInfo 的 Reused、WasIdle 和 IdleTime 分别回答不同问题。本文用 ClientTrace 观察 HTTP 客户端连接复用,说明响应体关闭、Transport 配置、重定向和 HTTP/2 场景下的判断边界。313 收藏 -
Go context.WithoutCancel 可以保留父 context 中的请求级值,同时切断取消信号。本文用收尾任务示例说明它的语义、独立超时写法、适用边界和常见误区。275 收藏 -
Go 1.20 起可以用 context.WithCancelCause 保存具体取消原因,再用 context.Cause 读取;本文区分 ctx.Err 的通用状态与 Cause 的诊断信息,并说明父子 context 的首次取消和超时原因设计。294 收藏