Go问答技术文章
-
atomic 只保证参与原子操作的那次访问,不会自动把同一变量旁边的普通读写变成安全访问。本文解释混用产生数据竞争的原因,并给出统一 atomic 或改用 Mutex 的写法。465 收藏 -
Go 中 os.Open 和 os.Stat 通常会跟随符号链接,os.Lstat 与 os.Readlink 则用于观察链接本身;Windows 还会受到链接权限、目标类型和卷路径处理影响。本文用一组小代码梳理不同打开方式,并给出跨平台读取与测试建议。464 收藏 -
Go multipart.Part.FileName 读取的是 Content-Disposition 中的 filename 参数。普通表单字段没有这个参数时返回空字符串,文件分段带空 filename 时也可能为空;如果有文件名,Go 还会用 filepath.Base 处理后再返回。464 收藏 -
围绕 Go image/draw.DrawMask 讲清目标区域、源图和 mask 的坐标关系,并用 draw.Src 与 draw.Over 解释透明遮罩的局部合成边界。464 收藏 -
Golang · Go问答 | 3星期前 | Context · 并发编程 · go语言 · 错误排查 · Go并发 context.AfterFunc sync.OnceFunc Stop竞争 重复清理
context.AfterFunc 返回的 Stop 只能阻止尚未开始的回调,不能等待已启动回调结束。本文用共享 OnceFunc 清理入口与 done 完成信号处理 Stop 和取消同时发生的竞争,并说明调用所有权、阻塞与独立清理 Context 的边界。463 收藏 -
Go 的 httptest.NewUnstartedServer 适合在启动 HTTPS 测试服务前修改 TLS 策略。本文说明 TLS、HTTP Server 配置与 StartTLS 的先后关系,并给出测试客户端和迁移检查清单。463 收藏 -
用 Go 的 exec.Cmd.Environ 查看子进程实际配置的环境快照,理清 Dir、Env、PWD 和重复环境变量之间的覆盖关系,定位工作目录或环境变量不符合预期的问题。463 收藏 -
Go 1.27 对声明 go 1.27 及以上的模块合并零散 require 块。本文区分布局、indirect 与依赖版本变化,说明注释保留、工具链范围和团队接纳方式,避免把正常整理误判成升级。463 收藏 -
Go sync.Pool 只适合复用可丢弃的临时对象。本文说明 Get 后如何建立初始状态、Put 前如何清理切片和引用,并用 defer 覆盖错误路径,避免旧数据带入下一次使用。463 收藏 -
Go INI 的大小写不敏感不是只放宽查询,而是会把节名和键名规范化为小写。本文解释三个开关的作用、冲突覆盖风险与稳妥配置方式。463 收藏 -
Go 反射修改字段时 CanSet 为 false,通常是值不可寻址、字段未导出或取错了 Value 层级。本文用一个小型反射检查器说明安全修复方式,并解释 unsafe 为什么不能直接把原 Value 变成可设置。463 收藏 -
Golang · Go问答 | 12小时前 | 标准库 · 正则表达式 · regexp · Go问答 · Go regexp FindAllStringSubmatchIndex 子表达式 正则排障
Go 的 FindAllStringSubmatchIndex 返回的是按匹配分组排列的字节索引矩阵。本文用 nil、[-1,-1] 和 [k,k] 三个结果区分整体无匹配、子表达式未参与和空字符串匹配,并给出安全切片与 n 参数的排查写法。463 收藏 -
Go url.PathEscape 直接处理路径片段时会把斜杠编码为 %2F;如果观察到斜杠,通常是读取了解码后的 URL.Path,或混用了路径拼接与查询参数编码。本文用最小示例区分 PathEscape、QueryEscape、RawPath 和 EscapedPath。462 收藏 -
通过容量与新增元素数量判断 Go append 是否复用底层数组,结合切片别名、元素地址和限容示例区分长度变化、共享写入与重新分配,并说明显式复制和函数返回值的使用边界。462 收藏 -
UTF-32 的四字节单元仍可能是代理项、超范围值或被错误字节序解释。本文给出固定小端的严格导入示例,说明默认解码替换行为、BOM 策略和失败偏移。462 收藏