Go语言技术文章
-
用 go/types 做静态分析时,Selection.Index 保存的是从接收类型到字段的索引链。本文用两层嵌入结构演示如何还原 Meta.Base.ID 路径,并说明指针、命名类型、FieldVal 与边界错误的处理方式。316 收藏 -
slices.Delete 的结果看似不稳定,通常来自忽略返回值、共享底层数组、len/cap 误判或并发读写。本文用 Go 示例和排查表说明稳定删除区间、处理尾部引用与隔离数据竞争的方法。315 收藏 -
Go io.Pipe 是同步且无内部缓冲的管道,一次 Write 可能由一次或多次 Read 完成。本文用读缓冲区大小、n 返回值和阻塞条件说明怎样判断读写边界。315 收藏 -
Go ast.File.Pos 指向 package 声明而非文件头。通过原始源码示例区分 FileStart、Doc 与字节偏移,并说明源码工具如何保留前导注释与空白。314 收藏 -
通过每次 Read 前后的 InputOffset 记录 CSV 输入消费范围,结合错误与输入版本回看原始字节,说明预读、多行字段、字节变换和失败后续传的边界。312 收藏 -
用 Go range over func 和 iter.Seq2 实现可提前停止的函数迭代器,区分空输入、正常结束与读取错误,保留清晰的错误边界。312 收藏 -
bytes.CutPrefix 返回原字节切片的视图。本文展示怎样复用输入工作区、将载荷复制到已有目标空间,以及在跨轮或异步保存时正确建立独立结果。311 收藏 -
Go slog.ReplaceAttr 的 groups 参数表示当前叶子属性所在的打开分组路径。本文用根属性、嵌套分组和定向脱敏示例说明如何按路径判断,避免误删同名字段。311 收藏 -
以旧式回调遍历迁移为场景,使用 Go 1.23 的 range over func 和 iter.Seq 实现可提前停止的函数迭代器,并说明 yield=false、版本和资源边界。311 收藏 -
Golang · Go教程 | 2天前 | 标准库 · 错误处理 · go · 时间处理 · Go 时区 日期解析 time.LoadLocation time.ParseInLocation time.Location
Go 解析不带时区的本地日期时,应先加载指定的 time.Location,再调用 ParseInLocation。本文区分空输入、未知时区和日期格式错误,并用 errors.Is 与 %w 保留调用方可判断的错误语义。310 收藏 -
Go net/http 的 CrossOriginProtection 被拒绝时,可以先用 SetDenyHandler 设置统一的 403 响应,再交给 Handler 包装业务处理器。本文对比 Handler 与 Check 的职责,给出 JSON 拒绝响应和手动处理 error 的写法。309 收藏 -
crypto/ecdh 没有 ParsePrivateKey,Bytes 的原始私钥字节应通过指定曲线的 NewPrivateKey 恢复。示例保存格式版本、曲线与 Base64 载荷,并解释原始编码与 PKCS#8 的区别。309 收藏 -
Go regexp.Regexp 返回空字符串不一定是没有匹配,边界断言和可选量词可能只匹配一个位置。本文用 FindStringIndex 区分 nil、零宽匹配和真实文本,并说明多行模式与中文 边界的处理方式。309 收藏 -
用 strings.Cut 解析裸键、空值和普通配置值,减少临时拆分切片,附 ParseOption 批处理实现与 SplitN 对照基准代码,说明统计单位、错误语义和结果存储寿命。308 收藏 -
ParseRequestURI 面向 HTTP 请求中的绝对 URI 或绝对路径;如果把不带协议的 host/path 当成完整 URL,解析就会失败。本文用 Go 示例区分它与 url.Parse 的适用边界。307 收藏