Go教程技术文章
-
Go 1.20 引入 unsafe.StringData、unsafe.String 和 unsafe.SliceData 后,字符串与字节切片之间可以少一次复制,但指针生命周期、只读约束和空字符串边界必须一起核验。本文用可复现实验拆开这些风险。197 收藏 -
用 Go runtime/metrics 读取 Float64Histogram,理解 Buckets 与 Counts 的对应关系,并用快照估算延迟分布的中位数和高分位边界。197 收藏 -
Golang · Go教程 | 2个月前 | HTTP · 文件上传 · Go教程 · 错误排查 · 文件上传 Go multipart/form-data mime/multipart boundary
Go 的 mime/multipart 报错时,先检查 Content-Type 里的 boundary,再对照请求体分隔线、CRLF、结束标记和 ReadForm 限制。本文给出发送端与解析端的稳定写法和排查清单。197 收藏 -
Go encoding/csv 的 Reader.InputOffset 返回最近一条完整记录结束处的字节偏移。本文用可恢复的处理示例说明如何保存断点、校验文件并从安全边界继续读取。197 收藏 -
使用 ast.Inspect 查找节点的关键是先按具体 AST 类型断言,再检查名称等字段条件,并用回调返回值控制子树遍历。本文给出函数调用查找、位置记录与常见陷阱。197 收藏 -
Go 中限制最低 TLS 版本,直接给 tls.Config.MinVersion 设置 tls.VersionTLS12 或 tls.VersionTLS13。本文说明默认行为、客户端与服务端写法、版本范围边界,以及如何通过 ConnectionState 读取实际协商版本。197 收藏 -
Go time.ParseInLocation 可通过有限布局列表兼容 RFC3339、本地日期时间与日期。本文给出显式默认时区、匹配标签和错误返回的原创接口,并说明小数秒、日期语义及时间戳的适用范围。197 收藏 -
区分Go pprof中的CPU样本、采集窗口与业务墙钟时间,通过原创采集示例理解flat、cum和百分比分母,说明等待与并行如何影响读数,以及何时补充trace或业务计时。197 收藏 -
Go 解析 X.509 证书后,应从 DNSNames、IPAddresses 等 SAN 字段读取名称;Subject.CommonName 只保留为主体信息,不应作为 VerifyHostname 的回退来源。197 收藏 -
服务启动后,配置、正则或只读客户端常常只需要初始化一次,却要被多个 goroutine 安全读取。本文用 Go 标准库的一次性值函数演示惰性初始化、结果缓存、panic 复用与测试边界,说明它和手写 sync.Once 的取舍。196 收藏 -
Go 1.22 起可以用 reflect.TypeFor[T]() 直接取得泛型参数的 reflect.Type。本文从 TypeOf 的旧写法切入,说明接口、指针、切片和结构体元数据的读取方式,并给出泛型元数据缓存与静态类型边界的实用写法。196 收藏 -
Go 的 time.LoadLocation 返回 unknown time zone 时,先区分名称拼写问题与运行环境缺少 IANA 时区数据库,再按宿主机、容器和精简镜像选择修复方式。本文给出保留错误、加载嵌入时区数据和安全回退到 UTC 的实用写法。196 收藏 -
用 Go 原生 fuzz 测试给文本解析器加入种子语料、Fuzz 函数和错误分类,区分预期的输入错误与需要修复的崩溃、越界和状态不一致。196 收藏 -
Go slices.Reverse 会直接交换切片中的元素,不返回新切片。本文说明它的最小用法、命名切片类型、nil/空切片边界,以及需要先复制的别名场景。196 收藏 -
Go maps.Collect 可把键值迭代器收集成新 map。以商品库存索引说明业务键清洗、重复覆盖、查询顺序与切片引用共享,并给出需要返回错误时的显式循环方案。196 收藏