Go语言技术文章
-
Golang · Go教程 | 2天前 | 标准库 · 错误处理 · 文件读取 · Go教程 · Go bufio bufio.Reader ErrBufferFull ReadSlice bytes.Join 文本扫描
bufio.Reader.ReadSlice 遇到没有及时出现的换行符时会返回 ErrBufferFull 和一段暂存切片。本文说明怎样先复制片段、继续读取,再用 bytes.Join 拼回完整一行,并区分 EOF 与真实错误。472 收藏 -
Go 1.22 的 slices.Concat 可以把多个同类型切片按传入顺序合并成新切片。本文用最小示例说明顺序、空切片、nil 结果、自定义切片类型,以及它与 append 的选择边界。168 收藏 -
Go 的 io.Pipe 可以让生产者 goroutine 通过 PipeWriter.CloseWithError 把失败原因传给消费者。本文用一条最小配方说明正常 EOF、业务错误和关闭时机的区别。306 收藏 -
Go io.MultiWriter 按顺序写入多个目标,遇到错误会立即停止。本文用失败 Writer 说明 n、err、短写和未执行目标的边界,并给出多目标尽力写入时的补偿方案。342 收藏 -
读取请求体、文件或消息流时,直接调用 io.ReadAll 会一直读到 EOF。本文用 io.LimitReader 设置最大读取范围,再用一字节探测区分正常结束、刚好达到上限和真正超限。303 收藏 -
Go exec.Cmd 应从命令环境副本追加受控覆盖,避免显式 Env 丢失继承项。本文说明 nil 与空切片、Dir 和 PWD、空值与删除,并给出完整示例及敏感变量继承的限制。269 收藏 -
Go 的 exec.Cmd 可以通过 ExtraFiles 把父进程已经打开的管道或套接字传给子进程。关键规则是 ExtraFiles[i] 在子进程中从文件描述符 3+i 开始,而不是沿用父进程原来的编号。452 收藏 -
用 Go 的 signal.NotifyContext 把中断和终止信号接到根 context,统一驱动服务退出;本文说明 ctx.Done、defer stop、context.Cause 以及 SIGTERM、os.Kill 的边界。105 收藏 -
Go flag 的多子命令程序可以为每个子命令创建独立 FlagSet,并分别设置 Usage 与输出流。本文用 serve、config 示例说明帮助文本隔离、解析错误处理和验证方法。350 收藏 -
Go flag 使用独立双短横线结束包装层选项解析,通过 Args 保留子命令参数。本文给出完整示例,说明普通参数提前终止、第二个分隔符、空参数与进程接口的处理边界。153 收藏 -
用 host:port 配置示例说明 Go flag.Value 的 String 和 Set 方法、flag.Var 注册方式、非法输入处理以及重复设置策略。241 收藏 -
通过字段白名单和 log/slog 的 ReplaceAttr,为 Go 配置日志建立敏感字段脱敏边界,避免密码、Token 等环境变量原值进入日志。440 收藏 -
Go 使用 gopkg.in/yaml.v3 读取配置时,应先把默认值写入结构体,再解码 YAML;这样文件中出现的字段会覆盖默认值,省略字段仍保留默认策略。本文还说明显式零值、未知键和严格解码的处理边界。412 收藏 -
Go JSON Decoder 在 Decode 前调用 UseNumber,可将动态接口中的数字保留为 json.Number。本文说明低位丢失的排查方法、Int64 范围与错误处理,以及从文本转换大整数的边界。194 收藏 -
Go 的 JSON 联合字段可以先用 RawMessage 保留 payload,再按 type 选择具体结构体二次解析。本文给出分派结构、错误处理和适用边界。288 收藏