Go语言技术文章
-
go-flags 的 optional 决定参数值能否省略,optional-value 决定裸参数出现时填入什么值。本文用三种命令行输入拆开两者与 default 的边界。321 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · 错误处理 · IO · Go教程 · Go eof io.Pipe CloseWithError PipeReader PipeWriter.Close
Go io.Pipe 写端正常 Close 后,读端读完剩余数据会收到 io.EOF;如果生产过程失败,应使用 CloseWithError 传播真实错误。本文对比三种关闭入口,给出带错误处理的读取循环和关闭边界。321 收藏 -
Go 的 nil map 可以读取、计算长度和遍历,但不能直接写入。本文用一个小型索引示例拆开遍历、初始化和写入边界,说明 make 应该放在哪里,以及空输入时怎样保持行为一致。321 收藏 -
slices.BinarySearchFunc 查不到值时,最先要检查的不是二分算法,而是比较函数是否按 func(E, T) int 返回“切片元素相对目标”的结果,以及切片是否按同一规则有序。本文用结构化切片说明方向、边界和插入位置。321 收藏 -
Go ascii85.NewEncoder 没有单独的 Flush 方法,Close 才负责写出内部暂存的尾部不完整块。本文说明 4 字节分块、Write 与 Close 的边界、错误处理和生产导出排障方式。321 收藏 -
Go maps.Keys 返回无序键迭代器;文章用原创示例区分切片收集与排序,说明空 map、旧版本替代写法,以及结构体键完整比较规则,帮助得到排列可重复的键列表。320 收藏 -
multipart.FileHeader.Size 是文件部件的大小元数据,读取长度还会受到当前游标、读取上限和错误处理影响。本文用 Go 示例拆开这几个数字的含义,并给出上传场景的排查与限制方式。320 收藏 -
Go netip.Addr.Is4In6 专门判断 IPv4-mapped IPv6 地址,也就是 ::ffff:0:0/96。本文结合输入解析和请求来源规范化,说明它与 Is4、Is6、Unmap 的关系,以及 IPv4、映射 IPv6、普通 IPv6 和无效地址的处理边界。320 收藏 -
说明 sonyflake 的时间、序列号和机器编号如何共同组成唯一 ID,解释默认私有 IP 低位的部署风险,并给出 MachineID 与 CheckMachineID 的启动检查思路。320 收藏 -
在 Go 中,for range 遍历结构体切片时,值变量通常是当前元素的一份复制品。直接修改 item.Name 只会改变这份副本,原切片不会变化。本文用排查清单拆开 range 的赋值语义,并给出索引修改、显式写回和指针切片三种写法。320 收藏 -
通过保留证书验证的Go TLS诊断示例解释ALPN配置与读取时机,定位空协议、有效配置、代理终止及应用实现不匹配问题。320 收藏 -
go/types 的 TypeParam 允许先创建、后设置约束,但 SetConstraint 不能随意插入类型查询流程。本文用两阶段组装示例说明约束完整性、Underlying 读取、Named 绑定和并发使用的边界。320 收藏 -
Go sort.Interface 稳定排序应使用 sort.Stable,切片可用 SliceStable;通过整数优先级案例说明严格比较、重复键等价关系、原始次序与自测方法。319 收藏 -
Go errors.As 可以沿着 %w 形成的错误链查找目标类型,并把匹配到的错误写入目标变量。本文说明多层包装、指针目标、首次匹配和自定义 As 方法的正确用法。319 收藏 -
Go 普通 map 并发读写会触发数据竞争,严重时出现 fatal error。本文按访问边界说明原因,并比较 mutex、RWMutex、单协程所有权与 sync.Map 的适用场景。319 收藏