Go语言技术文章
-
Go TLS 握手失败时,先用显式握手固定错误阶段,再沿错误链识别证书校验问题,并核对 MinVersion、MaxVersion 与最终 ConnectionState.Version,从而区分身份校验失败和协议版本不兼容。284 收藏 -
Go netip.Addr.UnmarshalText 可以把配置中的 IPv4、IPv6 文本解析成结构化地址。本文说明空文本、非法输入、IsValid 校验、IPv6 区域标识以及配置结构体接入方式。284 收藏 -
GOPRIVATE只声明私有模块范围,不提供仓库凭据。本文通过直连仓库和内部代理两套临时配置,说明代理、公共校验数据库与认证的独立边界,并归纳CI和缓存相关误区。284 收藏 -
Go 的 url.Values 用 Add 保存重复查询参数,Encode 按键排序并保留同键值顺序。本文用可复用的代码说明 Set、Add、Get 和 RawQuery 的边界。284 收藏 -
用 Go hex.NewDecoder 把十六进制字符流包装成 io.Reader,说明 io.ReadAll、分块读取、奇数长度和非法字符的处理方式。284 收藏 -
Golang · Go问答 | 1天前 | TLS · net/http · Go问答 · Go net/http crypto/tls http/2 net.Conn ALPN ConnectionState
Go 1.27 支持 net/http 从用户提供的 net.Conn 读取 TLS ALPN 状态。本文说明自定义 DialTLSContext 包装连接时如何保留 ConnectionState,并区分握手未完成、协议未协商和 HTTP/2 未尝试三类问题。284 收藏 -
html/template 的 Execute 返回错误时,Writer 里可能已经存在部分 HTML。本文说明执行错误与写入错误的区别,并给出用 bytes.Buffer 先渲染、成功后再提交 HTTP 响应的稳妥写法,同时说明流式输出何时只能接受部分结果。284 收藏 -
Go x509 的 SSL_CERT_FILE 没有生效时,先检查它是否指向单个 PEM 文件,再排除自定义 RootCAs、平台证书 API 和 Go 版本差异。本文按参数形态拆解环境变量未加载证书的常见原因。284 收藏 -
Go 反射处理结构体元数据时,可以用 reflect.Type.Fields 按声明顺序遍历 StructField,再通过 Tag.Lookup 读取标签;需要同时拿到字段值时使用 reflect.Value.Fields。本文从字段扫描、标签校验到嵌套结构体边界给出可运行示例。283 收藏 -
使用 Go 的 httputil.ReverseProxy 和 Rewrite,把公网 /api 请求安全映射到后端 /internal 基路径,同时处理查询参数、转发头和后端错误。283 收藏 -
errors.Is 匹配不到自定义包装错误,通常不是错误文本的问题,而是 %w 包装链、Unwrap 关系、自定义 Is 方法集或值指针形态出了偏差。本文用对照代码和测试拆开三类失败。283 收藏 -
Go 程序明明访问 HTTPS,结果却一直使用 HTTP/1.1,排查时不要只盯着 ForceAttemptHTTP2。本文按客户端声明、TLS 握手选择和 HTTP 实际协议三个层次,说明应记录的字段、常见冲突以及最小复现代码。283 收藏 -
Go 测试断言抽成辅助函数后,t.Helper 如何让失败行号回到测试调用点,以及多层断言包装该怎样逐层标记。283 收藏 -
Go bufio.Reader.ReadSlice 遇到 ErrBufferFull 并不代表长行结束。本文用原创 Go 示例说明如何及时复制片段、循环 append,并正确处理分隔符、EOF 与其他错误。283 收藏 -
Go bytes.CutPrefix 可以把可选协议前缀解析成 after 与 found 两个明确结果。本文用协议帧示例说明前缀命中、旧格式兼容、空字段校验和 bytes.Clone 的生命周期边界。283 收藏