Go教程技术文章
-
围绕Go net/url处理带未编码分号的查询串,说明ParseQuery如何保留有效参数和错误信息,为什么URL.Query会静默丢错,以及旧协议兼容分号时的安全拆分边界。353 收藏 -
Go sync.RWMutex.TryRLock 会立即尝试取得读锁,失败时直接返回 false,不会等待。本文说明它适合机会性读取和软降级的场景,以及失败分支、RUnlock 和关键数据一致性的边界。353 收藏 -
Lumberjack主动轮转成功后,原日志器可以继续通过同一实例写入新活动文件。本文提供完整Go示例,说明对象与句柄关系、并发协调、上层缓冲、轮转失败和后台归档的边界。353 收藏 -
Go 的 log/slog 会先通过 Logger.Enabled 和 Handler.Enabled 判断日志级别,再决定是否构造记录并交给 Handler.Handle。本文用可运行示例拆开这条调用链,说明昂贵属性计算该放在哪里,以及如何用测试确认过滤边界。352 收藏 -
Go gob.RegisterName 可以为接口值中的具体类型指定稳定线上名称。本文用生产者与消费者小项目演示共享名称常量、本地类型注册、接口编码、重复注册 panic 以及结构体字段兼容升级边界。352 收藏 -
用 Go 的 httptrace.ClientTrace 记录 DNS、连接、TLS、写请求和响应首字节时间,区分连接复用与新建连接,定位一次 HTTP 请求到底慢在哪个阶段。352 收藏 -
Go encoding/json.Encoder.Encode 会省略 JSON 内部无意义空白,但每次编码后固定追加一个换行。本文按单体接口、连续 JSON 流和可读调试三种场景,说明 Marshal、Encoder、TrimSuffix 与 SetIndent 的选择。352 收藏 -
Go HTTP 服务端怎样把 gzip 放到响应边界、正确处理 Content-Encoding 和 Vary,并在流式输出时同时刷新 gzip.Writer 与 HTTP 输出层。352 收藏 -
Go html/template 会根据动作所在的 HTML 上下文自动转义 URL。本文区分普通 string、template.URL 与 #ZgotmplZ,说明如何识别 URL 边界并安全地建立受信任类型。352 收藏 -
用 Go x/text/encoding/korean 的 EUCKR.NewEncoder 把 UTF-8 韩文转换为 EUC-KR 字节,说明 String、Bytes、Writer 的使用方式与不支持字符的错误边界。352 收藏 -
Go html/template 的 Delims 可以在解析前切换模板动作分隔符。本文用 [[ ]] 示例说明设置时机、Parse 与 Execute 的边界、旧语法表现和多模板集合的处理方式。352 收藏 -
Go 的 strconv 转换失败会返回 *strconv.NumError。本文用 errors.Is 区分 ErrSyntax 与 ErrRange,再用 errors.As 读取 Func、Num 和 Err,说明如何在接口或配置入口保留错误原因。352 收藏 -
Go types.Selection.Recv 保留选择表达式的接收者类型。通过嵌入方法示例区分选择起点、声明签名和结果类型,并说明 Index、Kind 与缺失记录的处理。352 收藏 -
解释 Go csv.Reader 读取带 UTF-8 BOM 的 CSV 时第一列出现隐藏字符的原因,并给出在输入流外层安全剥离 BOM、保留普通 UTF-8 内容和覆盖短输入边界的做法。352 收藏 -
Go 1.27 支持泛型方法,但类型参数写在接收者声明上,接口方法仍不能声明自己的类型参数。本文用一个可运行的小型数值容器,演示声明方式、调用边界、接口限制与 go test 验证。351 收藏