Go语言技术文章
-
Go中唯一合法的嵌套循环跳出方式是goto配合标签,标签需紧贴for前一行且与goto同函数内,不可跨作用域或跳过变量声明。236 收藏 -
用两个最小复现解释 Go slice 的 append 行为:当 cap 够用时会复用底层数组,原 slice 可能被间接改动;当 cap 不够时会分配新数组,后续修改互不影响。236 收藏 -
Go中字符串替换需用strings.ReplaceAll(全局替换)或strings.Replace(控制次数,n=-1为全部),因字符串不可变,必须重新赋值;误用str.Replace等错误写法或空分隔符Split会panic。235 收藏 -
GoGin启动HTTPS必须传cert.pem和key.pem两个PEM格式文件,缺一不可;开发可用openssl生成自签名证书,生产需用Let’sEncrypt的fullchain.pem+privkey.pem,并推荐手动构建http.Server以配置超时和TLS版本。235 收藏 -
container/heap/v2尚未进入标准库,因其仍是提案(Goissue#64287),未被合并到任何已发布版本;当前只能使用需指针接收器的旧版,且Push/Pop必须用指针调用。235 收藏 -
struct字段顺序影响缓存命中率,因字段按声明顺序连续布局,高频字段应紧凑排列于开头以共用缓存行,大或低频字段置末尾;伪共享需手动填充对齐至64字节边界;range遍历时应顺序访问以提升预取效率。235 收藏 -
gRPC服务端HeaderTableSize过小会触发RST_STREAM错误,根本原因是HTTP/2HPACK解码失败;需调大MaxHeaderListSize(非HeaderTableSize),两端对齐配置,并避免将大数据塞入Header。235 收藏 -
数组和切片的主要区别在于长度固定性与灵活性、容量机制以及传参行为。1.数组是固定长度的数据结构,定义后长度不可变,而切片是对数组的封装,支持动态扩容、截取等操作;2.切片包含长度(len)和容量(cap)两个属性,数组只有长度;3.传参时数组会复制整个内容,而切片传递的是引用,修改会影响原数据;因此,在需要动态操作或处理大数据时推荐使用切片,而在数据量固定且无需额外功能时可选择数组。234 收藏 -
以 Go Webhook 接收接口为例,讲清 HMAC 验签为什么要绑定原始 body、时间戳和事件 ID,并给出防重放、事件去重、审计日志和验证清单。234 收藏 -
Go 1.23 支持对迭代器函数使用 range,并在标准库提供 iter.Seq 和 iter.Seq2。本文从调用方需求、参数语义、提前停止和兼容策略出发,说明何时返回切片,何时设计迭代器 API。234 收藏 -
Golang · Go问答 | 3星期前 | 标准库 · bufio · 网络协议 · Go问答 · 流式读取 · peek Go bufio.Reader 协议解析 Go问答 Discard UnreadByte
Go 用 bufio.Reader 解析带长度或分隔符的协议时,Peek 只是查看缓冲内容,不会推进读取位置;Discard 才会消费字节。本文用一个简化帧协议拆开 Peek、Read、Discard、UnreadByte 的数据流转和边界处理。234 收藏 -
零容量channel(make(chanint))用于同步通信,需收发配对;非零容量才具缓冲能力,应按实际节奏设定,避免盲目设大导致OOM或逻辑错乱。233 收藏 -
本文深入解析Go中使用goroutine分发请求时常见的死锁成因,介绍基于worker模式的高并发处理方案,并提供可落地的WaitGroup+channel协作实践。233 收藏 -
Go单进程无法仅靠堆协程吃满多核,关键在GOMAXPROCS控制并行度而非协程数;IO密集型任务受netpoller单线程限制,即使GOMAXPROCS设高也难利用多核。233 收藏 -
答案:开发轻量级GolangHTTP调试工具,需封装RequestBuilder支持链式设置URL、Header、Body及超时;解析响应时分层展示状态、Header、格式化JSON或截断文本,并记录耗时与重定向;CLI支持子命令、配置文件复用、历史回放;扩展JSONPath提取、断言、导出cURL等功能。233 收藏