Go语言技术文章
-
Go泛型方法调用受约束承诺限制。本文用批量提取名称的示例解释值接收者、指针接收者与接口准入,比较多类型模块接入中的能力接口、切片选择和nil边界。221 收藏 -
Go regexp.Regexp.ReplaceAllStringFunc 适合让每个匹配结果参与替换计算。本文对比固定模板替换,说明回调参数、$ 字符边界、未匹配文本保留和迁移检查方式。212 收藏 -
Go 中向已关闭 channel 发送会触发 panic。本文解释 close 后的发送、接收与再次关闭规则,并给出单生产者、多生产者和接收者提前退出时的安全责任划分。375 收藏 -
sync.Cond.Wait 没有 context 参数,直接等待可能让取消中的 goroutine 长时间阻塞。本文用 context.AfterFunc 配合同一把 Locker 唤醒等待者,给出 WaitContext 封装、竞态边界和 channel 替代条件。354 收藏 -
atomic.Value 虽然接收 any,但同一个 Value 的 Store、Swap 和 CompareAndSwap 必须保持一致的具体类型。本文解释首个 Store 的类型锁定、nil 规则、常见 panic 以及统一快照结构的改法。444 收藏 -
Go log/slog 的 ReplaceAttr 可以在属性写入前按字段名和分组路径做遮盖或删除。本文用一个可复用的脱敏函数说明 HandlerOptions 配置、零值 Attr 语义和实际边界。334 收藏 -
Go log/slog 的 LogValuer 会把昂贵计算推迟到日志事件确实需要处理时。本文用最小示例说明禁用级别、启用 handler、结构化 Group、脱敏和 Logger.With 的边界。318 收藏 -
Go slog Handler的方法允许并发调用。本文以日志封装迁移为例,说明派生对象、共享写入器、原子错误计数与业务字段的边界,给出委托JSONHandler的完整示例和回归场景。122 收藏 -
Go 使用 defer 和 recover 隔离一次 panic 时,还应在恢复现场调用 runtime/debug.Stack 保存调用堆栈。本文给出统一错误返回、日志上下文和 goroutine 边界的写法。138 收藏 -
Go fmt.Errorf 在格式串中包含多个 %w 时会保留多个错误分支。本文用自动化任务场景说明多错误关系、errors.Is 与 errors.As 的选择、nil 过滤、错误门禁和兼容边界。349 收藏 -
Go regexp.Regexp 可以用 MarshalText 导出正则文本,再用 UnmarshalText 恢复为可匹配对象。本文用配置字符串说明 JSON 保存、非法模式处理,以及 Longest 和 POSIX 状态不会随文本自动恢复的边界。370 收藏 -
Go 随机字节的标准base64输入可直接兼容真实CR/LF。本文给出带输入上限、32字节约束、错误丢弃和规范化输出的示例,说明Strict、空白字符、填充与认证边界。470 收藏 -
Go 验证码既要在生产环境使用安全随机源,又要让单元测试可重复。本文用一个可注入的随机整数接口,把 crypto/rand 与固定序列测试替身分开,并覆盖长度、字符表和错误处理边界。150 收藏 -
Go 中 crypto/rand 用于令牌、密钥和不可预测的随机值,math/rand 用于模拟、抽样、洗牌和可复现测试。本文用选择清单、代码示例和迁移边界说明两者如何分工。421 收藏 -
Go TLS Config.Clone 是浅克隆,修改共享切片、证书池或闭包状态仍可能引发竞态。本文给出 NextProtos 与 RootCAs 的隔离示例,说明使用后只读、回调依赖和配置切换边界。426 收藏