Go语言技术文章
-
Go log/slog 的 HandlerEnabled 适合把动态级别判断前移。本文用 LevelVar 和请求级过滤示例,拆开日志级别、属性改写与上下文边界。304 收藏 -
CloseIdleConnections 只清理 Transport 中已经空闲的 keep-alive 连接,不会打断正在使用的请求。文章用发布切换场景说明它与 Transport 复用、响应体关闭和灰度验证的边界。329 收藏 -
reflect.TypeFor[T]() 能在泛型代码里直接取得类型参数 T 的 reflect.Type,避免用零值或指针哨兵绕一圈。本文用类型注册表拆开 nil、指针、接口类型和缓存键的边界,说明它与 TypeOf 的职责差异。322 收藏 -
通过一个可复现的 slog 小实验,拆开 LogValuer、Handler.Enabled 与 Logger.Enabled 的调用顺序,说明昂贵字段怎样延迟计算,以及等级过滤能省下什么成本。479 收藏 -
Go slog.JSONHandler 的 ReplaceAttr 不只是删字段:本文用真实调用路径说明 groups、Attr 和零值 Attr 的边界,给出隐藏敏感日志字段的安全写法。282 收藏 -
Golang · Go问答 | 5天前 | golang · base64 · Go问答 · URL安全 · 令牌 · Go encoding/base64 RawURLEncoding NoPadding 令牌编码
RawURLEncoding 是 URL 安全且不带等号填充的 Base64 编码。本文用 Go 示例拆开编码选择、解码输入、Strict 校验和与标准编码互换时最容易踩到的边界。141 收藏 -
用 log/slog 的 Enabled 判断和 LogAttrs 组织一次可验证的小实验,说明低级别日志何时被丢弃、昂贵属性何时仍会提前计算,以及 HandlerOptions.Level 与 LevelVar 的边界。368 收藏 -
Golang · Go教程 | 5天前 | Windows · 跨平台 · os · golang · 文件权限 · Windows unix Go 只读属性 os.File.Chmod FileMode
Go 的 os.File.Chmod 在 Unix 上修改权限位,在 Windows 上主要控制只读属性。本文用可运行示例说明 0o200、0o400、0o600 的平台差异、符号链接行为和跨平台验证方式。427 收藏 -
Golang · Go问答 | 5天前 | golang · 配置管理 · regexp · Go问答 · 文本序列化 · Go regexp.Regexp.MarshalText UnmarshalText 正则配置 文本序列化
regexp.Regexp 可以通过 MarshalText 保存为正则表达式文本,再由 UnmarshalText 调用 Compile 恢复。本文核对序列化内容、非法模式的错误边界,以及 POSIX 和 Longest 模式无法完整保留的限制。245 收藏 -
archive/zip.NewReader 要求 io.ReaderAt 和准确的字节大小,不能直接接收只有顺序读取能力的网络流。本文从接口边界出发,比较 bytes.Reader、临时文件和流式解压三种路径,给出资源释放、尺寸校验与安全路径检查的实用写法。123 收藏 -
Golang · Go问答 | 5天前 | 标准库 · net/http · Go问答 · ServeMux · HTTP路由 · Go 路径参数 http.ServeMux Request.PathValue 路由通配符
Go 1.22 引入的 http.ServeMux 路径通配符可以通过 Request.PathValue 读取,但空字符串既可能表示参数缺失,也可能是合法值。本文用订单路由示例拆开判断边界,并给出可兼容旧版本的处理方式。130 收藏 -
测试 HTTP Handler 时,httptest.NewRequest 会按服务端请求语义填充 URL、Host、TLS 和 ContentLength。本文用路径、绝对 URL、HTTPS 与请求体四组样本,拆开检查请求目标边界,避免把客户端请求和服务端请求混在一起。349 收藏 -
Golang · Go问答 | 5天前 | 标准库 · 排序 · 泛型 · Slices · Go问答 · Go 稳定排序 iter.Seq slices.SortedStableFunc slices.Values
slices.SortedStableFunc 适合把迭代器中的数据收集到新切片后稳定排序。本文用订单优先级示例说明相等元素为什么保序、原切片为什么不会被直接改写,以及 Go 1.23 代码的兼容边界。266 收藏 -
Golang · Go问答 | 5天前 | go · 密码学 · 安全编程 · 密钥管理 · crypto/ecdh · Go crypto/ecdh PrivateKey.Bytes NewPrivateKey 密钥导出
crypto/ecdh.PrivateKey.Bytes 返回私钥的原始编码,适合在明确的密钥序列化边界重新调用 Curve.NewPrivateKey;本文拆开复制语义、曲线长度校验和敏感字节生命周期,避免把原始私钥 bytes 当成通用密钥文件格式。235 收藏 -
Go 1.24 引入 runtime.AddCleanup 后,资源包装对象可以把兜底清理与显式 Close 分开。本文用一个文件描述符包装示例说明 AddCleanup、Cleanup.Stop、KeepAlive 的调用边界,以及为什么它不能替代显式关闭。108 收藏