Go问答技术文章
-
Go 的 Request.Body 是一次性读取流,307/308 重定向要保留原方法和请求体时,需要 GetBody 创建新的 body。本文说明 NewRequest 的自动填充、自定义 reader 的缺口和手动补齐方法。422 收藏 -
Go 1.27 已支持普通泛型方法,但接口方法仍不能声明自己的类型参数。本文用最小签名拆解报错来源,并给出工具链、go.mod、包级函数和适配器的选择方法。422 收藏 -
Go 的 time.Parse 使用参考时间表达布局,-0700 代表无冒号的数值时区偏移模板,而不是固定的西七区。本文用输入对照和最小示例说明如何选择 -0700、-07:00 与 Z07:00。422 收藏 -
区分json.Decoder读取值流时的正常EOF、截断错误与数组输入,提供复用Decoder的循环和单值尾部检查示例,说明预读缓冲、数据处理及关闭责任。422 收藏 -
Go 的 unicode.IsNumber 判断的是 Unicode 数字类别 N,不等于只判断 0 到 9,也不等于能识别所有中文汉字数字。本文对比 IsNumber、IsDigit 与汉字数字的边界,并给出按业务规则筛选 rune 的写法。422 收藏 -
Go sync.Cond 的 Signal 只是唤醒提示,不代表共享条件已经成立,也不会保存无人等待时的通知。本文用队列示例说明为什么 Wait 必须在持锁的 for 循环中重新检查状态,以及状态修改、Signal 和 Broadcast 的配合边界。422 收藏 -
Go encoding/xml 的 InputOffset 返回当前解析器的字节偏移,既是最近返回 token 的结束位置,也是下一个 token 的起始位置。本文用流式 token 记录和错误上下文示例说明调用时机、字节与行列的区别,以及 UTF-8 和 EOF 边界。422 收藏 -
Go Humanize 的 Bytes 和 IBytes 适合把字节数转成可读文本,但文本排序会受数字位数和单位影响。正确做法是保留原始字节数按数值排序,旧字符串则先用 ParseBytes 转回统一数值。422 收藏 -
Go 接收多种 JSON 事件时,不必一开始把所有 payload 解成 interface{}。用 json.RawMessage 保留原始 JSON,再按 kind 分流解析,可以减少无效结构体和类型断言;但它仍然持有字节数据,不能替代大小限制、深拷贝和错误校验。421 收藏 -
errors.Join 的多行结果不是 fmt 额外插入的换行,而是标准库按每个子错误的 Error 文本逐项拼接的结果。本文说明格式化原因、错误树判断方式,以及日志和接口层的迁移边界。421 收藏 -
无缓冲 Channel 强调发送与接收的同步交接,有缓冲 Channel 用有限队列吸收生产者和消费者的短时速率差异。本文从阻塞条件、业务语义、容量估算、关闭责任和取消路径说明如何做选择。421 收藏 -
Golang · Go问答 | 1星期前 | 接口 · 标准库 · IO · 性能 · Go问答 · Go Writer 字符串写入 WriteString io.StringWriter io.WriteString
Go 的 io.StringWriter 用一个 WriteString 方法描述字符串写入能力。本文说明 io.WriteString 的优先分发规则、如何为自定义 Writer 增加 WriteString,以及迁移时的返回值、错误和兼容边界。421 收藏 -
Go 中 crypto/rand 用于令牌、密钥和不可预测的随机值,math/rand 用于模拟、抽样、洗牌和可复现测试。本文用选择清单、代码示例和迁移边界说明两者如何分工。421 收藏 -
Go 1.26 默认开启 TLS 后量子混合密钥交换。本文用 Go 客户端和服务端最小实验说明协商结果怎么观察、旧客户端如何做灰度验证,以及 tlssecpmlkem 开关和回退边界。420 收藏 -
strings.TrimSpace 不只处理 ASCII 空格,它按 Unicode 空白规则裁掉字符串两端字符。本文用最小实验拆开 TrimSpace、unicode.IsSpace 与 TrimFunc 的关系,并给出字段清洗时的边界做法。420 收藏