Go教程技术文章
-
Go slices.Clone 会复制切片的元素数组,但它是浅拷贝:值类型元素可独立修改,指针、map 或嵌套切片仍需按字段判断是否共享。本文用代码和边界表说明 Clone、copy 与深拷贝的选择。430 收藏 -
用 Go 的 http.Cookie 设置 SameSite、Secure、HttpOnly 和过期时间,解释三种 SameSite 模式、MaxAge 正负值以及从 Set-Cookie 响应头排查属性不生效的方法。430 收藏 -
Go 测试里 t.Setenv 会注册环境变量清理动作,但它不能与 t.Parallel 放在同一测试流程中。本文用最小示例说明限制原因、子测试边界和稳定的隔离写法。429 收藏 -
用 Go 的 slices.BinarySearchFunc 在结构体切片中按自定义字段查找,重点说明返回下标与 found 的含义、排序契约以及比较器写错时的排查方法。429 收藏 -
Go 用 filepath.Glob 按通配符查找文件时,无匹配不是异常,非法模式才需要处理 error。本文从最小写法出发,说明 filepath.Join、空切片、ErrBadPattern、路径分隔符和递归查找之间的边界。429 收藏 -
用一个有界并发队列讲清 Go sync.Cond 的 Wait、Signal、Broadcast 和 for 条件检查,避免消费者空取与关闭后永久等待。429 收藏 -
并发测试里偶尔出现的数据竞争,关键不是反复调整 sleep,而是用 go test -race 读懂两条访问栈,锁定共享状态的所有权,再用 channel、mutex 或 atomic 建立同步关系并反向验证。428 收藏 -
Go 的 gzip.Reader 默认支持连续 gzip 成员;本文用一个小项目说明如何整体解压拼接流,以及如何关闭 Multistream 后逐个读取成员并正确处理 EOF 和校验错误。428 收藏 -
Go sync.Map.Range 能安全地遍历并发 Map,却不保证一次一致快照。本文从线上统计读数漂移切入,解释并发 Store/Delete 的影响、回调边界和需要快照时的替代方案。428 收藏 -
Go 的 os.File.Chmod 在 Unix 上修改权限位,在 Windows 上主要控制只读属性。本文用可运行示例说明 0o200、0o400、0o600 的平台差异、符号链接行为和跨平台验证方式。427 收藏 -
讲清 Go io.ReadFull 读取固定二进制头部时的缓冲区安排:先读定长头,再校验长度并分配载荷,区分 EOF 与 ErrUnexpectedEOF。427 收藏 -
Go 用 json.Decoder 解码到 interface{} 时,JSON 数字默认会变成 float64。本文演示 UseNumber 如何保留数字字面量,再按需调用 Int64 或 String,避免大整数被浮点转换。427 收藏 -
Go 的 html/template 和 text/template 接口相近,但安全边界完全不同。本文从普通字符串、HTML 上下文、纯文本输出和 template.HTML 安全类型四个角度说明选择方法,并给出迁移与测试检查清单。427 收藏 -
Go 中需要把多个文件、字符串或网络输入按顺序交给同一个消费函数时,可以用 io.MultiReader 组成连续输入流。本文说明顺序读取、EOF、非 EOF 错误和底层资源关闭责任。426 收藏 -
用 Go os/exec 分别读取 stdout 与 stderr,掌握 Start、并发消费管道和 Wait 的正确边界,避免输出混合、管道阻塞和误判退出状态。426 收藏