Go问答技术文章
-
Golang · Go问答 | 5天前 | 标准库 · golang · 正则表达式 · 字符串处理 · Go问答 · 正则表达式 Go regexp FindAllStringSubmatchIndex 子表达式
Go regexp 的 FindAllStringSubmatchIndex 返回结果中出现 -1,并不代表整体匹配失败,而是某个可选子表达式没有参与本次匹配。本文用一个可运行示例解释下标含义、判断方式和切片边界。120 收藏 -
Golang · Go问答 | 5天前 | 标准库 · golang · Go问答 · 文件系统 · 路径安全 · Go fs.ValidPath io/fs.ValidPath 文件系统路径 路径清理
io/fs.ValidPath 接收的是文件系统内部路径,不是操作系统原生路径。本文从拒绝 .、.. 和斜杠的现象入手,拆开清理、校验与 Open 调用之间的边界。497 收藏 -
Go 的 os.Root.OpenInRoot 把文件打开范围限定在指定根目录内。本文用真实代码拆开相对路径、符号链接和错误分支,说明它适合解决什么路径逃逸问题,以及如何验证回退策略。235 收藏 -
Golang · Go问答 | 5天前 | 标准库 · golang · HTTP · url · Go问答 · Go path net/url RawPath url.URL.JoinPath URL转义
Go 的 url.URL.JoinPath 会清理路径片段,但不会替你判断斜杠是分隔符还是数据。本文用 Path、RawPath 和 PathEscape 对比说明 URL 拼接与转义的边界。309 收藏 -
Go 的 Header.Get 找不到请求头和找到空值时都可能返回空字符串。本文用 Header.Set、Header.Get、Header.Values 和 CanonicalMIMEHeaderKey 拆开这个边界,给出缺失判断、重复值读取与大小写处理的可运行写法。306 收藏 -
Go 的 time.Time.Round 不只接收正数时长。本文用时间线示例拆开 Round、Truncate 和 Add 在负数 duration、半间隔与零值场景下的差异,给出可直接运行的判断代码。330 收藏 -
Go 服务读取 HTTP 响应时,io.ReadAll 会把内容一次性放进内存。本文用 io.LimitReader 和 http.MaxBytesReader 拆开客户端、服务端的上限策略,并说明如何区分截断与真实读取错误。220 收藏 -
Go 的 bytes.Buffer.AvailableBuffer 返回可借用的尾部空间,但它不是已经写入的数据。本文用最小程序说明 Bytes、AvailableBuffer、Write 与 Reset 的边界,避免把缓冲容量误当成有效长度。312 收藏 -
Golang · Go问答 | 5天前 | net/http · Go问答 · HTTP响应 · 连接控制 · Go FLUSH http.ResponseController Hijack ErrNotSupported
http.ResponseController 把 HTTP 响应刷新和连接劫持能力统一到一组探测方法中。本文用真实 Handler 场景拆开 Flush、Hijack 与 ErrNotSupported 的调用边界,说明什么时候应当回退,以及如何验证响应状态。430 收藏 -
Golang · Go问答 | 5天前 | 标准库 · golang · 排序 · Slices · Go 比较函数 slices.SortFunc slices.SortStableFunc 排序不稳定
slices.SortFunc 排序结果看似不稳定,通常不是算法随机,而是比较函数没有满足严格弱序,或调用方把等价元素的原顺序当成了保证。本文用订单优先级示例拆开 cmp 的返回值、重复元素处理和需要稳定排序的边界。223 收藏 -
encoding/base64 的 AppendEncode 会把编码结果追加到已有切片,适合复用缓冲区。本文通过可运行示例说明输出容量、尾部数据和 RawStdEncoding 的边界。486 收藏 -
Golang · Go问答 | 5天前 | 反射 · 数据结构 · 标准库 · golang · Go reflect.StructOf 动态结构体 reflect.StructField StructTag
reflect.StructOf 可以根据 reflect.StructField 列表拼出运行时结构体类型,适合字段集合由配置决定的场景。本文用一个可运行示例说明字段标签如何读取、为什么未导出字段会触发限制,以及如何缓存字段描述而不是反复创建类型。277 收藏 -
Golang · Go问答 | 5天前 | 并发 · 标准库 · go · 泛型 · unique · Go unique.Make unique.Handle Handle.Value 值身份 可比类型
Go unique.Make 为可比较值建立可比较的 Handle 身份。本文用一个小型标签池示例说明 Handle 相等、Value 浅拷贝、不可比较类型限制和进程结束后的生命周期边界。203 收藏 -
Go 的 iter.Pull 把 push 风格的 iter.Seq 转成 next 和 stop 两个函数,适合需要逐个取值的场景。本文用可运行示例说明 next 的结束信号、提前停止时 defer stop 的必要性,以及不能并发调用 next 和 stop 的边界。462 收藏 -
当正则模式的一部分来自用户输入或配置时,regexp.QuoteMeta 能把文本中的正则元字符当作普通字符处理。本文比较直接拼接与 QuoteMeta 的匹配结果,并说明它不适合替代完整正则语法的边界。331 收藏