-
Go 1.27 的 httptest.NewTestServer 默认使用内存网络,适合放进 testing/synctest 的并发测试 bubble。本文说明怎样使用 server.Client 发请求、为什么不应调用 Start、URL 和配置的边界,以及 testing.TB 自动清理与 NewServer loopback 模式的区别。
-
Go 1.25 起可以用 os.Root.Chmod 在受限目录树内修改文件权限。本文给出最小写法,说明相对路径、FileMode、错误分类和跨平台边界。
-
Go Protocompile 的 Compiler.Compile 接收 context.Context。本文用多文件 proto 示例说明怎样把请求取消或超时传入编译流程,用 errors.Is 区分 context.Canceled、context.DeadlineExceeded 与普通编译错误,并处理未完成结果。
-
Go crypto/tls 的 CurvePreferences 类型是 []tls.CurveID,列表顺序不会直接决定协商优先级。本文围绕 MLKEM1024 说明 nil 默认值、显式集合、GODEBUG 与客户端服务端交集的排错边界。
-
Go TLS 排障中,PeerCertificates 表示对端发送的证书列表,VerifiedChains 表示本地构造出的验证链。本文说明如何结合握手状态、客户端与服务端角色判断证书链,避免只凭证书数量下结论。
-
Go 的 Transport.TLSNextProto 不是普通的 HTTP/2 开关,而是 TLS ALPN 协商后把连接交给协议处理器的低层映射。本文按回调签名、authority、TLS 连接所有权和 HTTP/2 自动启用边界说明怎样注册与判断。
-
Go log/slog 的 Handler.WithAttrs 用来为新 Handler 保留公共属性。本文从 Logger.With 的调用关系讲起,说明如何附加请求字段、为什么原 Handler 不会被修改,以及自定义 Handler 如何处理属性切片、分组和 LogValuer。
-
Go x509 的 SSL_CERT_FILE 没有生效时,先检查它是否指向单个 PEM 文件,再排除自定义 RootCAs、平台证书 API 和 Go 版本差异。本文按参数形态拆解环境变量未加载证书的常见原因。
-
pflag 中不能通过比较当前值和默认值判断用户是否传参,因为用户可能显式传入了与默认值相同的值。本文说明 Changed、Visit 与 NoOptDefVal 的使用边界。
-
Go 1.26 新增的 Transport.NewClientConn 可以创建不进入 Transport 连接缓存的独立客户端连接。本文说明 scheme、address、ClientConn.RoundTrip、状态读取和关闭责任,并对比普通 http.Client.Do 的适用场景。
-
Go httptrace.Got1xxResponse 会在最终响应前收到每个 1xx 信息响应的状态码和响应头。本文说明如何把 ClientTrace 挂到请求上下文、读取 MIMEHeader、处理 100 Continue 与 103 Early Hints,并划清错误中止、重定向和响应体关闭边界。
-
Go HTTP/2 的 MaxConcurrentStreams 限制的是单条连接的并发流,不是所有连接共享的服务总并发。本文说明 Server.HTTP2 的配置方式、跨连接边界以及上线检查清单。
-
Go HTTP/2 priority 没有生效时,先确认 Go 版本、HTTP/2 协议和服务端开关。本文解释 net/http.Server.DisableClientPriority 的布尔语义,以及自定义写调度器让该字段失效的边界。
-
Go 1.24 起可以通过 net/http.Protocols 明确控制 Server 接收的协议。本文用服务端配置示例说明如何让 HTTP/1 与未加密 HTTP/2 共存,解释 h2c 与 TLS HTTP/2 的差异,并给出回滚和排障要点。
-
Go 的 http.Transport.HTTP2 用于配置 HTTP/2 连接的高级参数,但它不负责选择协议。本文区分 Protocols 与 HTTP2Config,说明客户端可用字段、零值语义和服务端专属配置。