Go语言技术文章
-
解释 bytes.Buffer 的 Available、Len、Cap 与 Grow 如何配合,给出可验证的追加空间判断,以及 AvailableBuffer 的使用边界。365 收藏 -
Go bufio.Reader.Discard 按固定字节数跳过协议头部,重点说明返回数量、短输入、负数参数和动态长度边界。365 收藏 -
根本原因是$PATH未包含Go二进制目录;Linux/macOS需将/usr/local/go/bin添加至~/.zshrc或~/.bash_profile并source,Windows需手动添加C:Gobin到系统Path环境变量。Go 二进制安装后为什么 go version 报 command364 收藏 -
Go 的 slog.LevelVar 适合把日志级别做成可热更新的开关。本文从 Handler 如何读取级别讲起,给出并发修改、配置回滚和测试验证的最小写法。364 收藏 -
从配置文件落盘权限不符合预期的现场出发,拆解 Go os.WriteFile 的 perm、Unix umask、首次创建与覆盖已有文件的差异,并给出可复现的检查和修正边界。364 收藏 -
从一个可重复触发的 Go 定时任务出发,拆解 time.Ticker 的停止顺序、退出信号、重复 Stop 边界和可验收的收尾写法。364 收藏 -
Go 用 IP 连接 HTTPS 时,TCP 地址、TLS ServerName、SNI 和证书 SAN 不是同一个概念。本文解释证书域名不匹配的原因,并给出保留校验的安全写法。364 收藏 -
Go exec.CommandContext 超时后,不要用 cmd.Process 非空判断进程存活。本文用 Run/Wait、ctx.Err、ExitError 和 ProcessState 区分取消原因、直接子进程终态、输出采集与资源回收边界。364 收藏 -
Go 1.23 的 maps.Keys 返回 iter.Seq 而不是切片。本文演示如何用计数和 break 获取任意前 N 个键,何时必须排序保证稳定顺序,以及如何封装可组合的 Take 迭代器。364 收藏 -
解释 Go nil slice 与空但非 nil 的 slice 为什么在传统 encoding/json 中分别输出 null 和 [],并说明 omitempty、响应 DTO 归一化以及 encoding/json/v2 迁移时的边界。364 收藏 -
errors.Join 会丢弃 nil 参数;只有所有输入都是 nil 时才返回 nil。本文用批量校验示例说明如何判断聚合结果,并用 errors.Is 识别具体错误。364 收藏 -
Go pprof profile 为空时,先区分采样窗口、目标负载、阻塞与互斥采样开关,以及 StopCPUProfile 和 Writer 写入边界,再选择正确的修复动作。364 收藏 -
Go 类型推断会从泛型函数的普通实参、赋值上下文和类型约束中补全类型参数。本文用命名切片、无类型常量和部分显式参数说明推断路径,并整理泛型类型不能省略参数的边界。364 收藏 -
Go net.Dialer 的 Timeout 是相对拨号开始的最长时长,Deadline 是绝对截止时刻;二者和 Context 截止时间取最早值。本文用可复用的 DialContext 示例说明设置方式、多地址解析和超时判断。364 收藏 -
用 Go iter.Seq 把回调式遍历接入 for range,讲清 yield 提前停止、资源清理、iter.Pull 和单次迭代的工程边界。364 收藏