Go教程技术文章
-
Gock 可以为同一个 HTTP 方法和路径注册多条模拟规则,并按 FIFO 顺序消费不同响应。本文用 Times(1) 组合状态码与 JSON,说明连续请求、规则耗尽、未匹配判断和清理边界。412 收藏 -
bufio.Reader.UnreadRune 不是任意读取后的通用回退按钮,它只接受紧邻 ReadRune 的一次回退。本文从源码状态、ErrInvalidUnreadRune 触发条件和 UTF-8 解析示例说明严格配对规则。411 收藏 -
Go 中不要用文件后缀猜测打开对象的类型。本文用 os.File.Stat 获取 FileInfo,再通过 Mode 的 IsDir 和 IsRegular 判断目录、普通文件及其它类型,同时处理 Stat 错误和文件句柄关闭。411 收藏 -
Go strings.CutSuffix 用一个调用同时返回去掉固定后缀后的字符串和 found 状态,适合拆分文件扩展名。本文说明匹配、未匹配、空后缀和 Go 版本边界。410 收藏 -
Go expvar 可通过JSON接口暴露进程变量。本文从一个小服务出发,讲解指标语义、一次注册、显式路由、本机监听及采集结果的解释。409 收藏 -
Go x/text/encoding/charmap 的 EncodeRune 接收一个 rune,返回目标单字节编码中的 byte 和一个 bool。本文说明如何用 ok 判断字符能否编码,如何定位整段文本中的不可表示字符,以及何时改用 NewEncoder 或 UTF-8。404 收藏 -
Go 读取 ShiftJIS 日文 CSV,可先用 x/text 解码为 UTF-8,再交给 csv.Reader 逐条解析。本文给出文件导入函数,说明列数、替换字符和错误处理边界。401 收藏 -
bytes.EqualFold 可以比较两个字节切片在 UTF-8 语义下是否经过简单 Unicode 大小写折叠后相等。本文从 ASCII 标识的实际场景出发,解释长度、空切片、非字母字节和非 UTF-8 数据的边界,并给出带封装函数的 Go 示例。400 收藏 -
Go bytes.FieldsFunc 接收一个 rune 判断函数,可把逗号、竖线、空白等混合字符当作分隔符,并返回不含空元素的字节子切片。本文说明自定义判断、UTF-8 语义、空结果和必要时的复制边界。397 收藏 -
Go log/slog 的 GroupValue 可以把多个 Attr 组成一个 Group,再配合 slog.Group 形成 request、user、deployment 等嵌套字段。本文说明空组消除、切片不可变和不同 Handler 输出时的组织方式。396 收藏 -
Go 的 slices.Compare 会从索引 0 开始逐个比较两个切片,首个不相等元素决定结果;如果共同前缀完全相同,则短切片更小。本文说明返回值、长度边界、元素约束和 CompareFunc 的选择。395 收藏 -
Go 的 norm.Properties(...).BoundaryBefore() 用来判断当前 rune 是否开启新的规范化片段。本文从单点判断讲到 NextBoundaryInString,说明如何在 UTF-8 分块输入中找到不会切断组合标记的安全位置。394 收藏 -
Go slices.EqualFunc 用自定义 eq 函数按索引比较两个切片,长度不同直接返回 false,比较器首次返回 false 时停止。本文结合跨类型字段比较,说明比较器签名、空切片边界和副作用控制。394 收藏 -
用 cel.Variable 声明 CEL 输入变量,配合 Env.Compile 和 Env.Program 编译可复用的 Go 筛选表达式,并区分编译期与求值期错误。394 收藏 -
Go cfg.New 可以把一个函数体转换成简单控制流图。本文从 AST 函数体出发,说明 mayReturn 回调、CFG.Blocks、Block.Nodes、Succs 与 Kind 的关系,并给出分支、返回和不返回调用的处理方式。393 收藏