Go教程技术文章
-
用 strings.CutPrefix 安全移除 Go 字符串的可选前缀,区分未命中、空结果和空前缀,并给出兼容旧版本的 HasPrefix 加切片写法。108 收藏 -
Go strings.IndexFunc 接收一个 rune 判断函数,返回第一个满足规则的 Unicode 字符在原字符串中的字节偏移;没有匹配时返回 -1。本文用 Unicode 字符属性和自定义规则说明最小写法、字节边界及未命中处理。393 收藏 -
用 crypto/rand 生成随机字节,再以 RawURLEncoding 得到无等号的 URL 令牌。示例区分随机性、编码格式和业务有效性,并说明严格解析、旧格式迁移与链接使用注意事项。480 收藏 -
Golang · Go教程 | 1星期前 | 并发 · 缓存 · 性能优化 · 正则表达式 · Go教程 · 正则表达式 Go 并发缓存 MustCompile regexp.Compile Regexp缓存
Go 中固定正则应在初始化阶段编译一次,动态正则则按 pattern 缓存 *regexp.Regexp。本文从重复 Compile 的现象出发,说明 MustCompile、并发安全 map、错误返回和高基数 key 的边界。349 收藏 -
用 Go 标准库边读文件边计算 SHA-256 摘要,不把整个文件一次性读入内存;本文给出 os.Open、sha256.New、io.Copy 的完整写法,并补充错误处理、进度统计与算法选择边界。133 收藏 -
通过依赖注入让 Go 令牌生成函数接收 io.Reader:生产环境使用 crypto/rand.Reader,测试环境注入可重复字节流,稳定覆盖长度、编码和错误分支,同时明确测试替换不能进入生产路径。453 收藏 -
Go TLS 主机名校验的关键是把拨号地址与证书名称分开看:使用 tls.Config.ServerName 指定证书校验名和 SNI,保留默认证书链校验,并用 x509.VerifyHostname 理解 DNS、IP、通配符和 Common Name 的边界。235 收藏 -
用 httptest.NewServer 隔离真实上游,搭建带路由和参数约束的临时库存服务。示例覆盖地址与客户端注入、超时、重定向策略、响应断言和资源清理,并区分 Recorder、TLS 与新测试接口。366 收藏 -
Go TLS 客户端要信任自定义 CA,通常应从系统根证书池开始,再用 AppendCertsFromPEM 追加 PEM,最后把证书池放进 tls.Config.RootCAs。本文给出 HTTP 客户端写法,并说明证书链、主机名和 InsecureSkipVerify 的边界。307 收藏 -
Go 的 httptest.ResponseRecorder 可以在不监听真实端口的情况下记录 handler 响应。本文从请求构造、结果读取到状态码、响应头和 JSON Body 断言,整理一套可直接放进 go test 的写法,并说明它与 NewServer 的边界。115 收藏 -
用 Go 的 url.Values 和 http.NewRequest 构造带重复查询参数的客户端请求,说明 URL 编码、请求头、错误处理与响应体关闭规则。192 收藏 -
Go 上传接口应在首次读取前包装 MaxBytesReader,并识别 MaxBytesError 返回 413。通过原始正文示例说明 ContentLength、完整读取、multipart 内存阈值、临时文件清理及单文件限制的区别。312 收藏 -
用 Go http.Client、Transport 和 context 拆分连接、TLS、响应头与整体请求超时,配合错误定位和连接池清单完成可维护配置。371 收藏 -
Go HTTP 客户端是否复用连接,关键在于共享 Transport、正确处理 Response.Body,并避免在每次请求中主动关闭 keep-alive。本文给出最小写法、连接池配置和 httptrace 排查方法。409 收藏 -
Go 循环里反复调用 time.After 是否需要改成 Timer?本文按单次超时、可复用等待和固定周期三种工作流给出选择,并说明 Go 1.23 之后的计时器回收与旧版本兼容写法。291 收藏