Go问答技术文章
-
filepath.Glob 返回空结果不一定是模式写错:无匹配时 err 为 nil,模式语法错误时才会返回 filepath.ErrBadPattern。本文给出区分两类结果的写法,并补充跨平台路径和文件系统错误边界。220 收藏 -
从 DNS 解析与 TCP/TLS 建连的分层排查开始,使用 net.Resolver 配置自定义 DNS 连接,并把它接入 http.Transport。219 收藏 -
constant.Imag读取实数时返回零虚部,MakeImag则负责构造纯虚数。本文用实数和复数样例区分两者,并说明未知状态、输入种类和分量展示的处理。219 收藏 -
Go regexp 的匹配实现采用 RE2 语义并保证随输入长度线性运行。遇到复杂模式耗时异常时,应先区分输入规模、重复编译和匹配次数,再用预编译与输入上限控制实际成本。218 收藏 -
Go benchmark 每次运行数字不同,通常不是 testing.B 失效,而是被测代码、计时边界和机器环境共同产生了噪声。本文用最小基准说明波动来源,并给出可比较的运行方式。218 收藏 -
从包依赖、包级变量依赖和源文件顺序三层解释 Go init 函数的执行顺序,并给出排查隐藏初始化依赖与改为显式 Setup 的方法。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 收藏 -
Go TCP 建连成功不代表业务响应完成。本文按读写阶段检查过期 deadline、缓冲刷新、协议帧和部分传输,并用独占连接示例说明交换预算与超时重试边界。218 收藏 -
解释 Go net/http 中 Request.Body 与 Response.Body 的责任差异,给出共享 Client、读完响应体并关闭 Body 的可复用最小示例,并说明大响应和禁用 keep-alive 的边界。218 收藏 -
Go database/sql 遍历 Rows 时,Scan 失败要及时停止读取并关闭结果集;循环结束后还要检查 Rows.Err,区分行转换错误与驱动读取错误。217 收藏 -
Go slices.All 会把切片转换成按顺序产生索引和值的迭代器,配合 range 就能保留传统遍历的两个变量。本文从返回类型、空切片、提前停止和写回原切片几个边界说明它的使用方式,并比较何时直接 range 更简单。217 收藏 -
Go image.YCbCr 的 Cb 和 Cr 不是总与 Y 像素一一对应。本文用 COffset、SubsampleRatio、Rect.Min 和 CStride 说明下采样后的色度索引计算,并给出安全读取示例。217 收藏 -
Go INI 的 Key 会把不存在的键转换成空值键,GetKey 才能保留缺失错误;MustString 则在键值为空时返回并写入默认值。本文用对照代码说明三者的边界和配置选择。217 收藏