Go教程技术文章
-
Go regexp.Longest 适合放在 token 候选识别层:它改变同一个正则的左侧最长匹配偏好,但不负责多条词法规则的全局仲裁、优先级或 Parser 语法组合。292 收藏 -
strings.Builder.Grow 传入的是额外可写字节数,不是最终总容量。本文用 Len、Cap 和 UTF-8 字节预算拆解如何预估容量、控制上界并避免过度分配。292 收藏 -
context.AfterFunc 的 stop 函数只负责阻止尚未启动的回调,不保证等待。本文用 sync.Once 和 done 通道封装主动 Close 与 Context 取消,避免资源清理重复执行。292 收藏 -
Go 1.23 引入 filepath.Localize,用于把 io/fs 的斜线路径安全转换为当前操作系统路径。本文比较 Localize、ValidPath 与 FromSlash 的边界,给出输入校验、跨平台错误处理和 API 选型示例。292 收藏 -
Golang · Go教程 | 1天前 | 标准库 · JSON · go语言 · 后端开发 · Go JSON反序列化 encoding/json/v2 MatchCaseInsensitiveNames 字段名匹配
Go encoding/json/v2 默认按大小写精确匹配字段名;本文用 MatchCaseInsensitiveNames、case:ignore、case:strict 与分隔符兼容选项,讲清调用级统一策略、字段级例外、歧义与重复名风险,并给出迁移测试清单。292 收藏 -
Go 泛型代码需要把类型交给反射注册表时,reflect.TypeFor 可以直接取得类型描述;再配合 AssignableTo 校验注册边界,避免用空值和类型断言绕一圈。291 收藏 -
Go 读取结构体自定义标签时,先通过 reflect.TypeOf 和 Field 拿到 StructField,再用 Tag.Lookup 区分标签缺失与显式空值;Tag.Get 适合只关心字符串的兼容场景,但非约定格式的返回值不应被依赖。291 收藏 -
net/http.ServeMux 注册 /orders/ 子树后,访问 /orders 可能先发生尾斜杠重定向。本文用 Go 1.22+ 方法模式和 {$} 精确匹配说明如何固定 POST 规范地址、兼容两种路径,并排查 301、302、307、308 对请求体的影响。290 收藏 -
讲清 Go fs.WalkDir 跳过指定子目录的正确写法:仅在目录节点返回 fs.SkipDir,并区分按名称与按相对路径排除,同时处理错误、根目录和非目录边界。290 收藏 -
sql.Named 会创建不带符号前缀的 NamedArg,database/sql 再将名称、序号和值交给数据库驱动。命名占位符是否可用、查询中的符号写法以及值转换规则都由具体驱动决定。290 收藏 -
从 io.Copy 的接口选择入手,拆解 os.File.ReadFrom 如何走 ReaderFrom 快路径,以及短读、EOF 和部分写入时该怎样验证。289 收藏 -
用 log/slog 的 slog.Group 组织请求与数据库字段,配合 TextHandlerOptions 核对嵌套键的最终输出,避开参数错位和重复前缀。289 收藏 -
Go 命令行读取密码时,可用 golang.org/x/term.ReadPassword 关闭本地字符回显。本文比较不同输入方式,并说明非终端错误、换行处理和敏感字节清理。288 收藏 -
Go filepath.Rel 遇到绝对路径和相对路径混用时,先用 filepath.Abs 统一计算基准,再处理跨根目录、../ 越界、符号链接和 URL 路径等边界。288 收藏 -
用一个可复用的 Go 上传请求构造器讲清 multipart.Writer.SetBoundary 的正确调用顺序、字符与长度限制、Content-Type 同步方式,以及 Close 收尾错误处理。288 收藏