Go语言技术文章
-
Go 的 bits.Add64 能同时返回 64 位和与一位进位。本文从 128 位加法扩展到任意长度 uint64 切片,讲清字序、进位传播、不等长补零和最高位溢出处理。325 收藏 -
os.DirFS 只保证交给操作系统的路径带有指定前缀,根目录内的符号链接仍可能指向外部。本文用最小项目说明成因,并给出 Go 1.24+ 的 os.Root.FS 改写方案。431 收藏 -
Go 的 big.ParseFloat 通过 prec 控制二进制有效位数,通过 RoundingMode 决定舍入方向。本文用可复用代码说明参数选择、Accuracy 判断和展示精度之间的边界。363 收藏 -
Go 的 url.QueryEscape 把空格编码成加号,是查询参数采用 application/x-www-form-urlencoded 兼容语义的正常结果。本文通过最小实验说明空格、加号和 %20 的区别,并对比 QueryEscape、PathEscape 与 url.Values.Encode。245 收藏 -
Go 1.23 的 maps.Insert 可以把 iter.Seq2 产生的键值对直接写入已有 map。本文用 slices.All、maps.All 和自定义序列说明最小写法、覆盖规则、nil map 限制,并对比 Insert、Collect 与 Copy。370 收藏 -
Go 的 netip.Addr.Unmap 只会移除 IPv4-mapped IPv6 的映射前缀。本文用 Is4In6、Is4、As4 和 BitLen 说明何时需要规范化地址、何时应保留 IPv6 语义,并给出统一比较和序列化时的判断清单。304 收藏 -
slog.LogAttrs 直接接收类型化 Attr,可跳过 Log 的交替键值解析和通用参数转换;再配合 Logger.With、Enabled 与基准测试,可以减少热点日志中的重复工作和不必要分配。180 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · 并发安全 · HTTP · 源码分析 · Go问答 · Go 闭包 连接池 net/http http.Transport.Clone TLS配置
http.Transport.Clone 会创建新的 Transport,并让连接池、锁和连接计数保持独立;但回调函数、接口值及 tls.Config 浅拷贝内部引用的对象仍可能共享,需要按隔离目标主动替换。136 收藏 -
讲清 Go fs.WalkDir 跳过指定子目录的正确写法:仅在目录节点返回 fs.SkipDir,并区分按名称与按相对路径排除,同时处理错误、根目录和非目录边界。290 收藏 -
Go 的 Request.Body 是一次性读取流,307/308 重定向要保留原方法和请求体时,需要 GetBody 创建新的 body。本文说明 NewRequest 的自动填充、自定义 reader 的缺口和手动补齐方法。422 收藏 -
Go 的 io.Pipe 可把只会写入的生产者连接到只会读取的消费者。本文用完整示例说明同步背压、关闭顺序、错误传播以及避免 goroutine 阻塞的方法。218 收藏 -
Golang · Go问答 | 1星期前 | Context · 超时控制 · net/http · Go问答 · Go HTTP超时 context.WithTimeout http.Client.Timeout
Go 的 http.Client.Timeout 是同一客户端所有请求共享的总时限兜底,请求 Context 则是单次调用可继承、可手动取消的业务预算。两者都能覆盖连接到响应体读取的完整生命周期,同时配置时更早的截止时间生效。304 收藏 -
Go 的 io.MultiWriter 会把同一批字节按传入顺序写入多个 io.Writer,某个目标出错后立即停止。本文用文件和内存缓冲区示例说明用法、错误边界与并发注意事项。158 收藏 -
Go 的 http.Response.Body 是流式网络资源,调用方必须关闭。对 HTTP/1.x 而言,读到 EOF 再关闭更有利于连接复用;但大响应应有限排空或直接终止,不能为了复用盲目读取。179 收藏 -
Go io.NewOffsetWriter 把相对偏移映射到底层 WriterAt 的 base+off,适合文件分区、文件头和分段写入。本文讲清 Write、WriteAt、Seek、io.CopyN 及上限保护。175 收藏