Go教程技术文章
-
Go Expr结构体环境需同时用于编译契约与运行数据。通过任务筛选示例说明expr.Env、字段标签、方法调用、AsBool及错误处理,并区分业务false与求值失败。477 收藏 -
reflect.Value.IsValid 判断反射值是否存在,reflect.Value.IsZero 判断有效值是否等于其类型零值。本文用 nil 接口、带类型 nil 指针和 reflect.Zero 拆开两者边界,并给出安全调用顺序。477 收藏 -
在 Go 静态分析中,类型别名不能只按 Named 类型处理。本文用 go/types.Alias.Rhs 读取 type A = R 的右侧类型,并说明 Alias、别名链与 types.Unalias 的边界。477 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · JSON · 错误处理 · go · 调试 · Go errors.As encoding/json/v2 SemanticError JSONPointer
Go encoding/json/v2 解码失败时,SemanticError 会携带 ByteOffset、JSONPointer 和 GoType 等上下文。本文用嵌套配置示例说明如何提取这些字段、转换行列位置,并区分语法错误、语义错误与流式读取错误。477 收藏 -
Go debug.SetMemoryLimit 可以给 runtime 设置按字节计算的软内存目标。本文按值班手册说明适用环境、容器余量、运行时指标、持续 GC 判断和回滚方式。477 收藏 -
Go benchmark 调用 testing.B.ReportAllocs 后,可以在结果中看到 allocs/op 与 B/op。本文说明如何放置调用、排除准备阶段、比较子 benchmark,并处理 b.Loop、b.N 和 RunParallel 的统计边界。477 收藏 -
用 Go 1.24+ 的 os.OpenRoot 和 Root.Open 封装根目录内文件读取,讲清 ../ 路径、符号链接、错误包装和资源关闭边界。477 收藏 -
Go plugin 通过运行时 Open 和 Lookup 装载独立插件,单可执行文件则在编译期收敛部署物。本文从平台、工具链、符号契约、安全和回滚边界比较两种方案,并给出上线决策清单。476 收藏 -
Go 构建标签适合把平台差异放到文件选择阶段。本文从文件名约束、//go:build 表达式和默认实现讲起,再用 GOOS、GOARCH、CGO_ENABLED 与 -tags 组织可重复的交叉编译。476 收藏 -
Go 的 httputil.ReverseProxy.Rewrite 适合把入站请求改造成可控的出站请求。本文从一个小型反向代理开始,讲清 SetURL、Host、X-Forwarded-*、查询参数和 Director 迁移时最容易忽略的边界。476 收藏 -
Go 1.23 的 slices.Repeat 可以按次数生成连续切片结果,本文说明正数、零次、空输入、nil 语义、负数和大规模分配边界。476 收藏 -
Go math/big.Int.Append 可把数字文本追加到字节切片。本文通过记录接口说明返回值接收、缓冲区复用、结果复制及参数错误处理。476 收藏 -
本文以对象移动为例,说明 Go rtreego 为什么不能直接修改 Bounds,并给出 Delete、更新边界、Insert 的维护顺序,以及没有原对象指针时使用 DeleteWithComparator 的方法。476 收藏 -
unique.Make 不负责打开文件。本文用 os.DirFS、fs.ValidPath 和 fs.ReadFile 在固定根目录下读取文件,再把文件内容交给 unique.Make 做规范化,并说明符号链接、可比较类型和 Go 版本边界。476 收藏 -
Go os.Root 适合在固定根目录内打开可能来自外部的相对路径。本文用一个小型读取函数说明空字符串为何要单独处理、怎样拒绝越界路径,以及如何用 %w、errors.Is 和 errors.As 保留可判断的错误边界。476 收藏