Go教程技术文章
-
Go 的 Rows.ColumnTypes 不直接返回 nil 长度,ColumnType.Length 返回 int64 与 ok。本文区分固定长度、无界类型、驱动不支持和业务包装层 nil,并说明如何把长度元数据与 SQL NULL 分开处理。128 收藏 -
Go database/sql 通过 Rows.ColumnTypes 读取查询结果的列名、数据库类型、长度、精度、可空性和建议扫描类型,并说明驱动不支持与 SQL NULL 的处理边界。319 收藏 -
Go 证书主机名校验失败时优先检查 SAN,不要把 CN 当作现代校验依据;本文区分 DNS SAN、IP SAN、ServerName 与 RootCAs,并给出自定义 CA 的排查和配置方法。272 收藏 -
讲清 Go x509.SystemCertPool 在 Linux 容器、macOS 和 Windows 中的兼容处理:系统池优先,异常时回退,追加自定义 CA,并区分根证书、PEM 和主机名错误。327 收藏 -
Go 客户端访问内网 HTTPS 服务时,如何保留系统根证书并追加自定义 CA,正确配置 x509.CertPool、tls.Config 和 http.Transport。255 收藏 -
Go 的 CheckRedirect 返回自定义错误时,Response 可能仍非空但 Body 已关闭;如果要读取最后一次响应,应返回 http.ErrUseLastResponse,并在调用方负责读取和关闭 Body。285 收藏 -
Go 的 http.Client 跟随重定向时,Authorization 并不是随机丢失。本文用重定向链、目标域名和 CheckRedirect 说明敏感请求头的转发边界,并给出可信目标允许、跨域停止和错误判断的写法。212 收藏 -
Go http.Client 默认会跟随重定向。本文用 CheckRedirect 和 http.ErrUseLastResponse 保留原始 3xx 响应,说明 Location、请求头、响应体及普通错误返回的边界。458 收藏 -
Go 的 encoding/xml.Marshal 会按 XMLName、xml.Name、字段标签和类型名决定元素名称。本文用一个订单报文示例说明如何固定根节点、表达命名空间、把字段输出成属性,并用嵌套路径组织子元素。278 收藏 -
使用 Go 的 encoding/xml 解析重复出现的嵌套元素时,把匹配字段声明为切片即可逐项接收;再结合 XMLName、属性标签和命名空间 URI 约束结构,避免同名节点映射错位。380 收藏 -
Go 的 encoding/xml 遇到带嵌套标签的混合文本时,直接映射结构体容易忽略空白。本文用 Token、CharData、XMLName 和命名空间字段完成可控读取。168 收藏 -
Go 的 encoding/json 把未知 JSON 数字默认解码为 float64,转入 interface{} 后可能丢失大整数精度。本文用 UseNumber、json.Number、RawMessage 和明确字段类型分别处理动态 JSON、多态字段与业务 ID。330 收藏 -
用 Go json.Decoder 读取连续 JSON 对象时,区分正常 io.EOF、语法损坏、截断输入和类型错误,并用 RawMessage 处理多态载荷。411 收藏 -
Go 接口返回多态 JSON 时,可先用 json.RawMessage 保留 payload,再根据 kind 选择目标结构体二次解码,并明确处理 null、未知字段和未知类型。229 收藏 -
解释 Go http.Cookie 同时设置 MaxAge 与 Expires 时的序列化结果、浏览器优先级,以及持久化、会话和删除 Cookie 的配置排查方法。401 收藏