Go语言技术文章
-
介绍 Gonum stat.Histogram 的边界、排序和权重约定,提供不修改原始切片的 Go 计数示例,说明右端点、归一化及计数切片复用语义。219 收藏 -
处理代理地址、连接地址或地址键时,IPv4 与 IPv4-mapped IPv6 可能代表同一主机。本文用 net/netip.Addr.Unmap 说明如何识别映射地址、统一表示,并避开 Is4、BitLen 和 As4 的边界误用。219 收藏 -
constant.Imag读取实数时返回零虚部,MakeImag则负责构造纯虚数。本文用实数和复数样例区分两者,并说明未知状态、输入种类和分量展示的处理。219 收藏 -
用 httptest.NewTLSServer 覆盖 Go HTTP 测试中的证书校验失败与成功分支,解释 server.Client、x509.UnknownAuthorityError、响应体关闭和自定义 Transport 的边界。219 收藏 -
用 Go 1.25+ 的 sync.WaitGroup.Go 收口并发任务启动、等待和错误回收,并说明 panic、Wait 顺序与旧版本兼容边界。219 收藏 -
Go os/exec 应固定可信程序入口、分项传递参数并限制业务字段。本文用原创导出函数解释参数与命令分离、取消和退出错误、输出生命周期、PATH及平台差异,不把无 shell 等同于任意输入安全。218 收藏 -
Go 配置文件不要直接截断写入。本文用同目录唯一临时文件、Write、Sync、Close 和 Rename 组织一次原子替换,说明失败清理、权限、并发读改写以及平台持久化边界。218 收藏 -
Go regexp 的匹配实现采用 RE2 语义并保证随输入长度线性运行。遇到复杂模式耗时异常时,应先区分输入规模、重复编译和匹配次数,再用预编译与输入上限控制实际成本。218 收藏 -
Go HTTP 处理器切换到原始连接时,应先检查 Hijacker 能力,再接收 net.Conn 与 bufio.ReadWriter,并明确接管后的期限、缓冲、Request.Body 和关闭责任。218 收藏 -
Go benchmark 每次运行数字不同,通常不是 testing.B 失效,而是被测代码、计时边界和机器环境共同产生了噪声。本文用最小基准说明波动来源,并给出可比较的运行方式。218 收藏 -
从包依赖、包级变量依赖和源文件顺序三层解释 Go init 函数的执行顺序,并给出排查隐藏初始化依赖与改为显式 Setup 的方法。218 收藏 -
Go unicode.ToLower 接收单个 rune 并按 Unicode 大小写映射返回 rune。本文说明它对非字母字符的行为、range 遍历字符串的正确写法,以及如何用 []rune 或 strings.Builder 组装转换结果。218 收藏 -
Go go-geom 的XY步长为2、XYZ步长为3。本文从批量坐标契约解释扁平数组的切分方式,提供输入约束、遍历和显式降维示例,并区分XYZ与XYM。218 收藏 -
Go reflect.TypeFor 适合在泛型代码中获取编译期已知类型的 reflect.Type;动态值仍应使用 reflect.TypeOf。本文用注册表示例说明两者的选择、接口边界和兼容注意事项。218 收藏 -
Go 的 url.Values.Get 在参数缺失和参数值为空时都会返回空字符串。要保留这两种语义,应使用 Has 判断键是否出现,或直接读取 map 中的 []string,并结合 ParseQuery 的错误处理统一封装。218 收藏