Go语言技术文章
-
用Go标准库可构建轻量级Todo应用:定义Todo结构体与内存map存储,实现增删改HTTP接口,手动注册路由,支持curl测试,后续可扩展持久化或前端对接。220 收藏 -
微服务版本管理需通过API网关+服务注册+请求上下文组合实现,核心是识别版本标识、路由至对应实例并支持灰度与降级;Golang中可在HTTP中间件解析Header或Query存入context,服务注册时携带版本标签,网关统一配置路由规则、权重分流及fallback,客户端SDK封装版本感知调用。220 收藏 -
goreleaserinit只生成最简配置,不自动推断builds;需手动添加builds块并指定id、main、binary,多main需多个条目;注意cgo、跨平台兼容性、tag前缀、token权限及checksums.txt校验问题。219 收藏 -
Go的replace必须用绝对路径,因相对路径不被识别为合法模块路径;需确保本地模块go.mod中module名与replace左侧完全一致,且路径末尾不加/,Windows用正斜杠或双反斜杠。219 收藏 -
Go slog 让标准库自带结构化日志能力,但落地时不能只把文本换成 JSON。更稳的迁移路线是先统一字段,再接入 JSONHandler,随后治理上下文、分组、脱敏和日志成本。219 收藏 -
Go可用etcd快速实现分布式配置中心:首选etcd因支持watch长连接、租约与MVCC;需用clientv3、设DialTimeout、独立goroutine监听、WithPrefix+WithPrevKV批量拉取与精准更新、sync.RWMutex保护本地缓存,并提供阻塞初始化与无感Get接口。218 收藏 -
围绕 Go 1.24 map Swiss Tables 新实现,讲清控制字节、开放寻址、缓存局部性、内存占用、删除场景和线上基准验证方法。218 收藏 -
Golang · Go教程 | 1个月前 | Context · 超时控制 · Go教程 · http.Client · Transport · Go context 请求超时 Transport http.Client Client.Timeout ResponseHeaderTimeout
Go HTTP 客户端超时不要只靠一个 context 或一个 Client.Timeout。更稳的做法是把总预算、连接、TLS 握手、响应头和读取阶段分开设置,再用错误判断和日志字段确认到底卡在哪一段。218 收藏 -
runtime.Stack是目前唯一合法获取goroutineID的方式,通过解析panic日志首行"goroutineN[state]:"提取数字,需注意缓冲区大小、正则匹配、禁用all=true等细节。217 收藏 -
goget在Go1.18+默认不修改go.mod,仅当在含有效go.mod的模块根目录运行时才更新依赖;安装工具应优先用goinstall;指定版本需用@vX.Y.Z格式,私有库需配置GOPRIVATE。217 收藏 -
Go 项目日志从 fmt.Println 迁到 slog,不只是换一个打印函数。本文用接口调用链场景讲清 slog 字段设计、上下文传递、Handler 选择、敏感字段处理和灰度接入路径。217 收藏 -
Go实现事件驱动微服务架构的核心是通过Kafka/NATS/RabbitMQ等消息总线解耦服务:统一连接管理、结构化版本化事件模型、异步幂等发布与消费,并以订单场景为例体现高扩展性与容错性。216 收藏 -
不能直接用sync.Map做LRU,因其无访问序、不支持O(1)节点移动,且超限淘汰需遍历,高并发下性能差;正确做法是用sync.RWMutex保护的map+container/list组合,以map长度为淘汰依据,并配onEvict回调释放大对象资源。216 收藏 -
使用goget升级依赖并用gomodtidy整理,可高效管理Go项目依赖。先用golist-m查看当前版本,再通过goget指定包升级至最新或特定版本,如@latest或@patch;执行goget-u更新所有依赖,配合-u=patch仅升补丁版;最后运行gomodtidy清理冗余依赖并用gotest验证兼容性,确保升级安全稳定。216 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · go · csv · 数据导入 · 错误定位 · CSV导入 encoding/csv Go教程 FieldsPerRecord LazyQuotes
Go 标准库 encoding/csv 默认会用首条记录推断字段数,遇到不齐列或引号不规范的文件就可能在中途报错。本文用导入小工具拆开 FieldsPerRecord、LazyQuotes、ParseError 和逐行处理边界。216 收藏