golang
已收录文章:58篇
-
Go语言中所有参数传递都是值传递,传递指针时复制的是地址值。值传递不改变原始变量,适用于基本类型和小型结构体;指针传递可修改原始数据,适合大型结构体但需防范副作用。切片和map作为引用类型,其底层数据可通过值传递的副本修改,但重新切片或扩容会导致底层数组分离,影响函数内外的一致性。356 收藏
-
如何用Golang实现事件驱动架构并集成NATSStreaming?1.定义事件结构,包含ID、类型、数据和时间戳;2.使用stan.Connect连接NATSStreaming集群;3.通过sc.Publish发布序列化后的事件到指定主题;4.利用sc.Subscribe订阅事件并用回调函数处理接收的数据;5.处理错误及确保可靠传递,使用持久化、ACK机制和DurableNames;6.采用领域.事件类型命名规范如user.created;7.引入版本控制,如添加version字段或使用不同主题区分版本350 收藏
-
使用Golang构建微服务API网关时,路由转发与服务聚合是核心功能,通过Gin或Echo框架结合httputil.ReverseProxy可实现高性能动态路由转发,利用通配符路径和配置化路由表提升灵活性;服务聚合通过并发请求多个微服务并合并结果满足前端单一接口需求,结合context控制超时、结果缓存和错误兜底提升可靠性;网关可通过中间件集成JWT鉴权、限流、日志和熔断机制增强安全性与稳定性;推荐采用配置文件或服务注册中心实现路由的动态管理,避免硬编码;并通过连接池、协程数控制、Prometheus监控337 收藏
-
Golang变量声明方式包括var、:=和new,var适用于全局和显式类型声明,:=用于函数内简洁初始化,new用于指针内存分配。332 收藏
-
ChaosMesh是专为Kubernetes设计的混沌工程工具,通过注入网络延迟、Pod故障等异常,结合Golang服务验证系统容错能力,提升微服务稳定性。323 收藏
-
在Go语言中,正确高效使用regexp包的关键是预编译正则表达式并复用对象,避免在循环中重复编译;优先使用MustCompile处理已知正确的正则,根据场景选择MatchString、FindStringSubmatch或ReplaceAllString等方法;通过将正则对象定义为包级变量实现复用,结合简单字符串判断提前过滤,避免复杂或非贪婪模式,利用其并发安全特性,从而显著提升性能,最终确保正则操作高效稳定。320 收藏