Go教程技术文章
-
Go 1.21 起,bytes.Buffer.AvailableBuffer 可以把当前可用容量交给一次短字段追加,再通过紧接的 Write 提交。本文说明它与普通 Write、strings.Builder 的选择边界,以及返回切片的生命周期。245 收藏 -
Go work 用 go.work 把多个独立 Go module 放进同一 workspace,让本地联调可以直接读取模块改动。本文按迁移变更单的方式说明目录、use、模式切换、测试与交付边界。245 收藏 -
Go 拼接 API 根地址和资源路径时,不要靠字符串加斜杠。url.JoinPath 会统一路径分隔符并清理 .、..;如果某个变量本身是一个含斜杠的数据段,再先用 url.PathEscape。245 收藏 -
go tool trace 默认通过本地 HTTP 服务打开 trace viewer。本文解释 localhost:0、:6060、127.0.0.1:6060 和 0.0.0.0:6060 的差别,给出限制在本机回环接口的命令写法。245 收藏 -
Go filepath.IsLocal 适合在拼接用户路径前筛出绝对路径、空路径和父目录路径。本文用原创 Go 示例说明它与 filepath.Clean、filepath.Join 的边界,并解释符号链接、存在性和权限问题为什么仍需额外处理。245 收藏 -
Go generate 可以通过 package 路径、同目录 Go 文件列表以及 -run、-skip 精确缩小生成范围。本文结合注释触发、执行顺序和失败边界,说明如何只对指定包运行代码生成指令。245 收藏 -
Golang · Go教程 | 3天前 | 标准库 · 错误处理 · Go教程 · Go FLUSH bufio.Writer close io.WriteCloser encoding/ascii85 ascii85.NewEncoder
Go ascii85.NewEncoder 按 4 字节块编码,最后不足一块的数据要靠 Close 收尾;如果外层再包 bufio.Writer,应先 Close 编码器,再 Flush 外层缓冲,两个错误都不能忽略。245 收藏 -
Go 的 archive/tar 读取截断归档时,正常结束与数据不完整不是同一个结果。本文用 Reader.Next、Header.Size、io.Copy 和 io.ErrUnexpectedEOF 说明如何定位截断位置,并在流式解包中安全停止。244 收藏 -
Go slices.BinarySearchFunc可在自定义顺序中查找,前提是排序与查询比较语义一致。通过分数降序的结构体示例,说明整数目标、重复键、未命中插入位置和顺序维护。244 收藏 -
Go unicode/utf8.RuneLen 返回单个 rune 编码成 UTF-8 所需的字节数:正常值为 1 到 4,非法 Unicode 值返回 -1。本文区分 RuneLen、len 和 RuneCountInString,并说明 RuneError 与非法 rune 的边界。244 收藏 -
Go os.Pipe 可以把一个进程的标准输出接到另一个进程的标准输入。本文从一个小型命令管道出发,说明读写端方向、Cmd 生命周期、关闭时机,以及结果为空和等待不返回的常见原因。244 收藏 -
用 Go archive/zip.FileHeader.SetMode 把文件模式写入 ZIP 条目,配合 CreateHeader 创建归档,并说明解压端读取权限、Unix 元数据和跨平台边界。243 收藏 -
filepath.Rel 只计算 basePath 与 targPath 的词法相对关系,不会自动阻止目标路径越出根目录。本文用 Go 示例说明如何处理返回错误、判断 .. 或 ../ 越界结果,并解释 Clean 与符号链接带来的边界。243 收藏 -
reflect.TypeFor 读取的是泛型参数的静态类型,不会因为没有动态值而返回空类型;真正需要单独处理 nil 接口的是 reflect.TypeOf。本文用一个类型描述小工具串起两种 API,并处理 Kind、Elem 和不支持展开的异常分支。243 收藏 -
使用 Go archive/tar.Writer.WriteHeader 写入目录 Header 时,关键是设置 tar.TypeDir、规范 Name,并把目录视为无数据体条目;随后再通过新的 Header 写入目录中的普通文件。243 收藏