Go语言技术文章
-
Go TLS 的 MinVersion 限定协议协商下限,旧客户端最高版本不足时会因无共同版本握手失败。本文给出服务端配置示例,说明证书、TLS 终止点、日志与版本组合排查方法。327 收藏 -
go/types.Named.Origin 用来从实例化后的 Named 找回泛型原始定义。本文对照 Obj、TypeArgs、TypeParams 和 Underlying,说明静态分析中如何正确区分实例类型、声明身份、类型实参与底层结构。297 收藏 -
Go 默认 Transport 会按目标协议和环境变量选择代理。本文解释 HTTP_PROXY、HTTPS_PROXY、NO_PROXY 与进程缓存的关系,提供独立 Transport 的配置诊断示例及部署迁移注意事项。233 收藏 -
Go 1.22 以后,ServeMux 会在注册互相冲突的方法模式时直接 panic。本文用最小复现说明冲突判定规则,并给出统一通配符、拆分 HTTP 方法和处理版本迁移的修复方式。461 收藏 -
Go 的 fs.Sub 负责把已有文件系统映射成一个子树视图,但不会主动确认目录已经存在。本文解释错误为何延后到 Open、ReadFile 或 ReadDir 等访问动作,并给出显式检查与封装方式。367 收藏 -
Go 服务端可以直接调用 r.Referer() 读取请求头中的 Referer;缺失时返回空字符串。本文说明它与 Header.Get 的关系、测试写法、代理和隐私策略造成的缺失边界,以及为什么不能把 Referer 当成认证或安全授权依据。314 收藏 -
os.Stat 跟踪符号链接后描述目标对象,Lstat 描述链接本身,Readlink 返回保存的目标路径。通过正常与悬空链接的对照示例,解释类型位、相对目标路径、错误分类和路径变化的处理边界。500 收藏 -
Go 的 crypto/rand.Read 与普通 io.Reader 不同,它会通过 io.ReadFull 填满整个目标切片。本文解释短读取契约的差异、正确生成随机字节的写法,以及自定义 Reader 时应该如何处理 n 和 error。148 收藏 -
Go 的 float64 可以作为 map key,但 NaN 不等于自身,所以写入后的 NaN 不能按原值稳定查回。本文解释插入、查找、删除的边界,并给出规范化键的写法。465 收藏 -
Go csv.Reader 遇到列数不一致时,把 FieldsPerRecord 设为 -1 即可保留每条解析后的 []string;文章同时说明严格模式、ErrFieldCount、ParseError 和 ReuseRecord 的处理边界。245 收藏 -
用 Go netip.AddrFrom16 从 16 字节数组构造 IPv6 地址,说明字节布局、IPv4 映射 IPv6 的语义,以及 AddrFromSlice 的长度边界。232 收藏 -
通过 encoding/json 的结构体、指针和 map 示例,拆开 JSON null 与字段缺失的输入差异,说明如何保留、清空和判断字段状态。424 收藏 -
Go url.URL.JoinPath 用于按 URL 语义组合路径段,会处理多余斜杠和点段,但不负责查询参数、文件路径或权限校验。本文结合代码说明 Path、RawPath、EscapedPath 与 RawQuery 的边界,帮助你安全地拼接 HTTP URL。468 收藏 -
Go json.Compact 会删除 JSON 结构中的无意义空白,但保留字符串内容,并把结果追加到 bytes.Buffer。本文说明最小调用、错误处理、已有前缀和它与 gzip、Indent、Marshal 的边界。484 收藏 -
bufio.Reader.Peek 能查看固定长度前缀而不推进缓冲读取位置,但可能预读底层输入。通过四字节标识示例说明同一 Reader 的后续读取、短输入、ErrBufferFull 及返回切片的有效期。168 收藏