Go教程技术文章
-
Go slices.MaxFunc 适合从结构体切片中按自定义比较器挑出一条最高优先级记录。本文给出最小写法,说明比较方向、相等项、空切片 panic 和多字段决策边界。226 收藏 -
Go netip.Addr.Is4In6 专门判断 IPv4-mapped IPv6 地址,也就是 ::ffff:0:0/96。本文结合输入解析和请求来源规范化,说明它与 Is4、Is6、Unmap 的关系,以及 IPv4、映射 IPv6、普通 IPv6 和无效地址的处理边界。320 收藏 -
Go 1.23 新增的 unique.Make 可以把 comparable 值转换成可比较的 Handle,同值输入得到相等句柄。本文从触发信号、最小写法、Value 浅拷贝和边界处理说明怎样使用它,不把唯一化误当成通用缓存。200 收藏 -
Go slices.EqualFunc 用自定义 eq 函数按索引比较两个切片,长度不同直接返回 false,比较器首次返回 false 时停止。本文结合跨类型字段比较,说明比较器签名、空切片边界和副作用控制。394 收藏 -
Go http.NewRequestWithContext 把 context 绑定到出站 HTTP 请求,取消信号会覆盖连接、发送、响应头和响应体读取。本文说明 WithTimeout、错误处理、响应体关闭与测试请求的边界。272 收藏 -
Go maps.Equal 根据键集合与对应值比较两个 map。本文用配置对照示例说明顺序、nil 与空 map、键缺失与零值的区别,并介绍切片值应使用 EqualFunc、接口动态值与 NaN 的注意事项。378 收藏 -
Go errors.Is 适合判断被包装错误链中是否包含某个哨兵错误;需要提取原始具体类型和字段时,应改用 errors.As 或 errors.AsType。258 收藏 -
Go errors.Join 可以把多个非 nil 错误组合成一个错误,并通过错误树继续支持 errors.Is 和 errors.As。本文从批量处理场景说明 nil 过滤、匹配能力、输出格式与使用边界。496 收藏 -
Go strings.Cut 适合按第一次分隔符拆分字符串,并通过 found 区分未命中与合法空字段。本文用键值和协议片段说明三个返回值、重复分隔符、空输入以及与 Split、SplitN、CutLast 的选择边界。474 收藏 -
Go context.AfterFunc 会在 Context 取消后异步执行收尾函数,但 stop 返回 false 不等于收尾已经完成。本文用资源清理场景说明注册、正常结束、取消等待和并发边界,避免把 stop 当成同步等待函数。425 收藏 -
讲清 Go os.DirFS 的 fs.FS 包装方式、相对路径规则、符号链接边界,以及何时应选择 os.Root.FS。133 收藏 -
Go time.NewTimer 的关键不在于记住一段固定模板,而在于区分提前取消、已经触发和再次复用。本文用请求超时场景说明 Stop、Reset、C 的配合方式,并补充 Go 1.23 及以上与旧版本的差异。269 收藏 -
围绕 io/fs.ValidPath 说明 FS.Open 名称的相对路径规则、根路径语义、斜杠边界和自定义文件系统的入口检查方式。488 收藏 -
Go math/bits.ReverseBytes16 接收 uint16 并交换其中的两个字节,适合处理定长整数的字节顺序转换。本文说明它与 Reverse16 的区别,给出协议字段中的调用方式,并提醒不要把字节交换和 encoding/binary 的整体序列化混在一起。306 收藏 -
围绕 Go strconv.ParseFloat 讲清 bitSize 精度选择、ErrSyntax 与 ErrRange 判断、NumError 读取及 NaN 和 Inf 的业务边界。361 收藏