Go语言技术文章
-
Go reflect.Value.IsNil 在无效 Value 或不支持的 Kind 上会 panic。本文给出 IsValid 与 Kind 守卫示例,区分 nil 接口、typed nil、普通零值及接口容器,避免把防异常改动变成错误的业务判空。216 收藏 -
Go 的 net/http.Client.Timeout 使用零值时代表不设总超时,连接、重定向和读取响应体都可能没有统一时间预算。本文解释零值语义,并给出 Client、Context 与 Transport 超时的分层写法。216 收藏 -
Go fs.WalkDir 不会自动进入目录中的符号链接目标,但 root 自身是符号链接时会以目标作为遍历起点。本文拆开这两个边界,说明如何在回调中识别链接并按业务策略显式处理。216 收藏 -
Go cmp.Or 可以从多个同类型候选值中返回第一个非零值,适合表达环境变量、配置文件和代码默认值的优先级。本文拆开零值约定、comparable 类型限制、参数提前求值和配置流水线中的错误边界。216 收藏 -
Go 的 url.URL.String 可以保留 # 后的 Fragment,但 RequestURI 只生成 HTTP 请求需要的路径与查询部分,因此看起来像是 Fragment 丢失。本文用最小示例说明两者的边界,并给出需要把片段信息传给服务端时的改造方式。216 收藏 -
Go 1.27 调整了 go tool trace 的 -http 监听语义:只写端口时默认限制为本机。本文区分 trace 数据生成与查看服务,并给出本机监听、显式对外监听和迁移检查方式。216 收藏 -
Go 的 url.URL 把 Path 保存为解码后的路径,RawPath 只是可选的编码提示。本文从一个路径编码不一致的场景出发,说明 RawPath 何时有效、何时会被 EscapedPath 忽略,以及如何避免双重编码。216 收藏 -
Go CEL 的 Extend 返回新环境,不会自动更新旧 AST 和 Program。通过新增库存预留变量的示例,说明在目标环境重新 Compile、区分纯新增声明的兼容边界,以及按环境版本管理规则缓存。216 收藏 -
基于Go snowflake v0.3.0,介绍默认节点范围、环境变量配置、共享Node生成编号及扩容边界,区分理论序列容量与实测吞吐,并说明编号存储和性能记录方法。216 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · HTTP · Go教程 · Go MIME Content-Type charset boundary mime.ParseMediaType
Go mime.ParseMediaType 可以把 Content-Type 或 Content-Disposition 拆成规范化媒体类型、参数 map 和 error。本文说明 charset、boundary、引号参数、参数缺失与格式错误的处理边界。216 收藏 -
Go http.Header.WriteSubset 不会替 exclude 的键做规范化。本文拆开 Set/Add、直接写 map 与排除映射的关系,给出稳定过滤 Header 的写法和兼容旧数据的处理边界。216 收藏 -
Go 中关闭 channel 后仍可能读到零值,这是语言语义而不是异常。本文说明已发送值、关闭产生的零值、range 结束和 x, ok 接收之间的关系,并补充 nil channel、重复 close 与发送权限边界。216 收藏 -
说明 Go time.Time 的 Round 与 Truncate 如何按固定周期取整并保留 Location,结合固定偏移示例区分绝对网格、本地整点、日历一天及单调时钟注意点。215 收藏 -
Go 模块路径和本地目录显示不一致时,先用 go env 确认主模块与工作区,再用 go list -m -json 对照 Path、Replace、GoMod 和 Dir,最后检查 require、replace 与 go.work 的作用范围。215 收藏 -
Go 1.25 起可以用 os.Root.MkdirAll 在受限目录树内创建多级目录。本文说明 OpenRoot、相对路径、FileMode 权限参数、重复创建和迁移边界。215 收藏