Go语言技术文章
-
Golang · Go教程 | 1天前 | 网络编程 · IPv6 · Go教程 · 代码质量 · go vet · IPv6 net.Dial Go 1.25 go vet hostport net.JoinHostPort
Go 1.25 的 go vet 新增 hostport 分析器,可以发现用 fmt.Sprintf 拼接 host 和 port 后传给 net.Dial 的 IPv6 地址错误。本文从错误现场出发,改用 net.JoinHostPort,并用 vet 与运行测试核对修复结果。284 收藏 -
Go 反射处理结构体元数据时,可以用 reflect.Type.Fields 按声明顺序遍历 StructField,再通过 Tag.Lookup 读取标签;需要同时拿到字段值时使用 reflect.Value.Fields。本文从字段扫描、标签校验到嵌套结构体边界给出可运行示例。283 收藏 -
用 reflect.Value.Seq2 把 map、slice 和自定义迭代器统一接入泛型消费逻辑,说明 CanSeq2 的预检边界、Value 解包方式以及容易触发 panic 的场景。282 收藏 -
Go slog.JSONHandler 的 ReplaceAttr 不只是删字段:本文用真实调用路径说明 groups、Attr 和零值 Attr 的边界,给出隐藏敏感日志字段的安全写法。282 收藏 -
Go 1.24 引入的 os.Root 能把文件操作限制在指定目录内,但它不是忽略符号链接的黑盒。本文用 OpenRoot、Root.Open 与 Root.FS 拆解路径越界、目录链接和 DirFS 的边界。280 收藏 -
io.MultiWriter 会按传入顺序逐个写入,某个 Writer 返回错误或短写入后立即停止,不会继续后面的目标。本文用日志分流场景拆解部分写入、ErrShortWrite、重试与一致性边界。279 收藏 -
Go 中 bytes.Buffer 适合逐步写入并把内容交给下游读取,bytes.Reader 适合只读字节切片、定位游标和重复读取。本文用一个小实验拆开两者的状态变化与选择边界。279 收藏 -
Go 服务偶发变慢时,runtime/metrics 能把 GC 频率、暂停和堆目标放到同一组可采样指标里。本文从一次延迟抖动开始,说明如何选指标、对齐时间窗口,并排除把正常回收误判成 GC 压力。278 收藏 -
json.Decoder 默认会忽略结构体中不存在的 JSON 字段。本文用兼容升级、管理接口和边界校验三个场景说明 DisallowUnknownFields 什么时候适合开启,以及如何识别 unknown field 错误。278 收藏 -
Go 的 net.Conn.SetDeadline 会把读写截止时间写入连接状态,超时后不会因为下一次读写自动恢复。本文用一个连接复用场景说明清理时机、读写边界和可验证的修复写法。277 收藏 -
Go 的 unique.Handle 适合把重复的可比较值映射为轻量句柄,用句柄比较代替长字符串比较,同时保留 Value 取回原值的能力。本文从标签去重场景出发,拆开 Make、Value、句柄相等和垃圾回收边界,并给出可运行的验证代码。277 收藏 -
Golang · Go问答 | 1天前 | 反射 · 数据结构 · 标准库 · golang · Go reflect.StructOf 动态结构体 reflect.StructField StructTag
reflect.StructOf 可以根据 reflect.StructField 列表拼出运行时结构体类型,适合字段集合由配置决定的场景。本文用一个可运行示例说明字段标签如何读取、为什么未导出字段会触发限制,以及如何缓存字段描述而不是反复创建类型。277 收藏 -
在高频日志、协议拼包或批量导出中,fmt.Sprintf 的完整格式化很方便,但单个整数转文本时可能带来不必要的工作。本文用 strconv.AppendInt 与 fmt.Sprintf 的同一输出基准,拆开分配、缓冲区复用和可读性边界,给出可验证的选型规则。277 收藏 -
Go 里两个 time.Time 看起来显示相同,直接用 == 仍可能比较出不同结果。本文从单调时钟、Location 和时间精度三个边界说明 Equal 与 == 的区别,并给出可验证的比较写法。276 收藏 -
Golang · Go问答 | 2天前 | 并发 · 切片 · golang · 内存管理 · Go问答 · 代码排错 · 数据隔离 底层数组 append Go问答 slices.Clone 切片拷贝
slices.Clone 和 append 都能复制 Go 切片,但容量、底层数组别名和空切片行为并不完全相同。本文用可运行示例说明如何判断拷贝是否隔离,以及在并发和接口返回中该怎么选。276 收藏