Go问答技术文章
-
Go 1.27 的 encoding/json/v2 已移除实验期 format 标签选项。本文按标签参数形态、time.Time、time.Duration 和自定义类型说明迁移时应该怎么改。397 收藏 -
本文用 Go net/http 说明 Transport.CloseIdleConnections 只关闭 keep-alive 空闲连接,区分 Response.Body、活动连接和请求取消,并给出 Client、Transport 与连接池参数的排查方法。397 收藏 -
以Linux交叉构建为范围,区分目标架构与链接方式,介绍关闭cgo和保留目标C工具链两条路线,并说明动态加载器、共享库及运行镜像迁移条件。397 收藏 -
Go Decimal 无法恢复进入 float64 前已丢失的十进制尾数和输入格式。通过相邻长小数示例区分浮点往返表示与原始输入,并说明字符串、整数系数入口及舍入策略的适用边界。397 收藏 -
Go google/uuid 的 Validate 只返回格式判断结果,Parse 则解码得到 UUID 值。结合严格36位小写接口示例,区分兼容格式、规范化、零值策略、版本要求与资源权限。397 收藏 -
Go gzip Close 负责补写压缩数据和流尾部,文件 Close 与 Flush 不能代替它。本文给出保留复制、压缩收尾及文件关闭错误的示例,说明失败产物隔离与交付条件。397 收藏 -
Go 中 := 只有在同一块作用域且至少有一个新变量时才会复用旧 err。进入 if 等内层块后,同名 err 可能变成新变量,导致错误检查和返回值失真。396 收藏 -
Go 反射调用 Set 失败,先不要把问题归因于类型不匹配。ValueOf 的值拷贝通常不可寻址,指针解引用后才可能获得可设置值;未导出字段和 MapIndex 还有额外边界。本文用 CanAddr、CanSet、Elem 和最小示例快速定位。396 收藏 -
Go 的切片不能直接作为 map key,因为切片不是可比较类型。本文解释编译期限制、interface 动态键的 panic,并给出字符串、数组和结构体三种迁移方案。396 收藏 -
交叉编译后不要只看构建机上的 GOOS 和 GOARCH。本文用 go env、文件格式、go version -m 和 build ID 四层证据,确认最终二进制实际面向的操作系统与 CPU 架构。396 收藏 -
讲清 Go http.Transport 的 IdleConnTimeout 如何按 keep-alive 空闲时长回收连接,并区分连接数量、响应头等待、请求总超时和主动清理。396 收藏 -
Go 泛型接口报错时,关键不是调用语法,而是类型参数的实际方法集。本文用 Buffer 和 Sink 示例说明 T 与 *T 的差异、编译期断言及指针接收者的取舍。396 收藏 -
Go test -run 匹配不到子测试时,重点检查正则是否按父测试和子测试分段、斜杠是否被误当层级,以及名称空格是否已规范化。396 收藏 -
围绕 Go filepath.Rel 讲清相对路径计算前提、Windows 跨盘错误、VolumeName 与 IsAbs 判断,以及失败后的绝对路径或业务错误回退方案。396 收藏 -
token.File.String 只按 Name、Base 和 End 生成固定的文件描述。要控制输出中的文件标识,应在 AddFile 时传入 filename;需要自定义日志格式时,读取 Name、Base、Size、End 后自行拼接。396 收藏