Go语言技术文章
-
Go JSON 时间字段解析失败,应先区分 JSON 类型、RFC3339 格式与时区契约。结合标准字段和旧格式输入示例,说明 ParseInLocation、空值、必填检查及常见格式误区。268 收藏 -
Go sync.Pool 适合缓存短生命周期、可安全丢弃的临时对象。本文用 bytes.Buffer 示例说明 Get 后覆盖、使用中独占、Put 前 Reset,以及切片引用和异步访问的生命周期边界。268 收藏 -
不同包的同名未导出字段具有不同名称身份。通过 go/types 对照例子,说明 Name、Id、Identical 的职责,以及包路径、字段标签和符号集合一致性。268 收藏 -
Golang · Go教程 | 1天前 | 标准库 · 源码分析 · Go教程 · Go ast go/ast go/types parser.ParseFile ast.Ident ast.NewIdent 源码生成
Go ast.NewIdent 用一个名称创建 *ast.Ident,适合拼装源码生成所需的标识符节点。本文从一次位置为空的故障复盘出发,说明 Name、Pos/End、Obj 分别代表什么,以及什么时候应该改用 parser.ParseFile、token.FileSet 和 go/types。268 收藏 -
Go atomic.Int64保证单字段操作原子,但多个Load不构成同一时刻快照。本文用完整小程序说明并发加减、运行期采样、最终计数与周期取差,并归纳重置和对象复制的边界。267 收藏 -
Go net/url 解析带端口的域名和 IPv6 URL 时,Host、Hostname()、Port() 容易混用。本文用最小示例说明如何读取主机与端口,并处理方括号、Zone、缺失端口和非法端口边界。267 收藏 -
用 Go 标准库 debug/elf 打开 ELF 文件,遍历 File.Sections 读取节区名称、类型、偏移和大小,并说明 Section、Data、Open 之间的选择与特殊节区边界。267 收藏 -
客户端断开后 Handler 未退出,应区分请求取消尚未被观察到与业务未响应取消。本文通过最小本地 HTTP 服务说明 Context 传递、业务退出、代理边界和超时预算,不把客户端报错等同于后端停止。267 收藏 -
Go strings.Split 返回空元素通常不是异常,而是前置、连续或尾部分隔符保留了空字段位置。本文结合代码说明 Split、空分隔符与 Fields 的边界,并给出保留或过滤空字段的判断清单。267 收藏 -
Go math/bits.Div32 把两个 uint32 组成的双字被除数除以 uint32,并返回商和余数。本文拆开说明 y==0 与 y<=hi 的 panic 条件,给出安全参数检查和边界判断,避免把商溢出误认为普通除法结果。267 收藏 -
go mod tidy 升级后出现依赖增删、go.sum 变化或程序行为不同,不要直接回滚。本文按基线、diff、模块图、工具链和分层复现五步定位变化来源,并给出可提交的判断标准。267 收藏 -
Go HTTP2Config.StrictMaxConcurrentRequests决定HTTP/2流额度满时等待还是增加连接。文章对比两种策略,给出客户端配置示例,并区分流额度、连接预算与业务并发限制。267 收藏 -
Go 的 os.File.Truncate 只改变文件长度,不会自动调整当前 I/O 偏移。本文用代码拆开 Truncate、Seek、Write 和 WriteAt 的职责,解决截断后 EOF、追加和固定位置覆盖的常见误判。267 收藏 -
可以。go/types 将 nil *Tuple 定义为合法的空元组,Len 会返回 0;但 At 仍需要有效下标和实际元组,不能因为 Len 安全就对所有方法取消 nil 判断。267 收藏 -
围绕 Go ast.CommentMap 讲清删除声明后的注释过滤、节点替换时的 Update 迁移,以及 ParseComments、Filter 和 format.Node 的配合边界。267 收藏