Go问答技术文章
-
Go 字符串按字节截断后出现替换符,通常是切进了 UTF-8 多字节序列。本文解释 U+FFFD 的来源,并分别给出安全字节截断、rune 截断和更高层字符边界的判断方法。372 收藏 -
短任务已经返回并不代表 goroutine 已退出。本文用 goroutineleak 和 pprof 拆解结果发送、提前返回、取消与排空之间的生命周期关系,给出可落地的修复清单。372 收藏 -
Go Goldmark 默认不渲染 Markdown 中的原始 HTML,原因在 HTML renderer 的安全选项。本文说明 html.WithUnsafe 的职责、受信任模板的配置方式,以及不可信内容为什么不能直接开启。372 收藏 -
Go HTTP 客户端连接没有按预期复用时,重点检查 Response.Body 是否关闭、是否读到 EOF,以及读取上限是否符合业务边界。本文按响应体大小给出可落地的处理方式。372 收藏 -
Go 泛型约束列出多个类型时,类型参数并不能自动获得这些类型各自拥有的方法。本文从类型集合、约束方法集、指针接收者和联合类型四个边界排查调用失败,并给出可落地的修复写法。372 收藏 -
Go tar 的 unexpected EOF 通常意味着头部、正文或外层输入提前结束。通过只读遍历保留条目名和读取阶段,区分正常 EOF、声明长度不足、生产端未收尾及压缩传输截断。372 收藏 -
filepath.Join 会清理路径文本,但不会替应用保证结果仍在指定根目录内。本文用最小示例说明 Join、IsLocal 与 os.OpenInRoot 的边界,并给出四类输入的验证矩阵。372 收藏 -
Go os.File.ReadFrom 没有 offset 参数,需要先用 Seek 设置目标文件当前偏移,再从 io.Reader 流式写入;本文说明 n、err、覆盖范围和 O_APPEND 的边界。372 收藏 -
RWMutex写入等待需要结合同锁实例、读锁持有范围和采样证据定位。本文提供可控制释放的并发示例,区分等待与持有时间,并解释block/mutex profile、嵌套读锁、锁升级与缩小临界区的注意事项。372 收藏 -
Go Paho MQTT 中,Publish 的 retained 参数会让 broker 保存主题的最后一条消息,并在匹配的新订阅建立时回放。本文区分保留消息与 CleanSession=false 的持久会话恢复,演示如何读取 Retained 标记、处理提前到达的消息,以及清理过期状态。372 收藏 -
Go range 遍历结构体切片时,值变量只是元素副本;本文比较索引写回、指针字段修改和替换指针的写法,说明怎样避免改了却没有生效。372 收藏 -
IdleTimeout 只负责 keep-alive 连接等待下一次请求的时间,不负责首个请求的慢请求头、慢请求体或响应写入。本文用一个最小 Go HTTP Server 拆分四类超时,并给出慢连接排查与配置方法。372 收藏 -
Go bytes.Buffer 读取后 Len 会变小,但 Reset 仍能让同一个对象继续写入。本文拆开读取位置、未读切片、底层存储和复用边界,帮助你避免把 Bytes 返回值保存过久。372 收藏 -
使用 bytes.Buffer 时,Grow(n) 不是越大越好。本文按固定大小、近似大小和未知大小三种输入场景,说明如何估算 n,区分 len 与 cap,并给出避免频繁扩容和过度预分配的实用流程。372 收藏 -
slices.Clone 能复制 Go 切片,但它解决的是底层数组共享,不等于深拷贝或并发安全。本文用容量边界、append 行为和嵌套引用三个检查点说明该怎么选。371 收藏