Go 语言中 uintptr和unsafe.Pointer 的区别

`unsafe.Pointer`1. 定义: `unsafe.Pointer` 是一种特殊的指针类型。它可以指向任意类型的数据。你可以把它看作是 C 语言中的 `void`,但功能更受限,主要用于类型转换。2. 类型安全: 顾名思义,使用 `unsafe.Pointer` 会绕过 Go 的类型安全检查。编译器不会阻止你将一个 `int` 转换为 `unsafe.Pointer`,
阅读全文

为什么说golang参数传递皆是值传递?

什么是值传递 (PassbyValue)?值传递的核心思想是:当一个变量作为参数传递给函数时,函数接收到的是该变量的一个副本 (copy),而不是变量本身。 函数内部对这个副本的任何操作,都不会影响到函数外部的原始变量。 值类型 (Value Types) 的传递Go 中的基本类型(如 `int`, `float`, `string`, `bool`)、结构体 (`str
阅读全文

链路追踪基础&gf中的应用

链路追踪基础&gf中的应用 前言在微服务架构的系统中,请求在各服务之间流转,调用链错综复杂,一旦出现问题和异常,很难追查定位。链路追踪系统能够追踪并记录请求在系统中的调用顺序、调用时间等一系列关键信息,从而帮助我们定位异常服务和发现性能瓶颈。 OpenTelemetry分布式追踪(OpenTelemetry) 是一个开源的可观测性框架,旨在帮助开发者收集、处理和导
阅读全文

Go 1.23 新特性之slices 和 sync核心库

slices新特性Go 1.23 版本于2024年8月14日发布,带来了多项重大更新。本文将重点介绍 `slices`、`sync` 等核心库的小改进,这些改进将大幅提升开发体验。 slices 库的新增特性 Repeat 函数`slices` 库新增了一个 `Repeat` 函数,该函数返回一个新切片,该切片是将原始切片重复指定次数后的结果。函数签名:
阅读全文

Go 1.23 新版本 Timer 和 Ticker 的重要优化

Timer 和 Ticker 的基本概念在深入探讨 Go 1.23 版本对 Timer 和 Ticker 定时器进行的优化之前,以下是关于这两种定时器的基本介绍: Timer:一次性定时器,用于在未来的某一时刻执行一次操作。常用于单次延迟执行任务。 Ticker:周期性定时器,用于在固定的时间间隔重复执行任务。常用于重复执行任务。 垃圾回收的改进 Go 1.2
阅读全文

Golang设计模式之模板方法模式

模板方法模式模板方法模式是一种行为型设计模式,它在父类中定义一个算法的框架,允许子类在不改变算法结构的情况下重写算法的某些特定步骤。这种模式通过把不变的部分代码放在父类中,把可变的行为延迟到子类中实现,从而提高了代码的复用性。 模板方法模式中的角色 AbstractClass(抽象类):定义了模板方法和算法的框架。它实现了一些步骤,这些步骤可以是具体的方法也可以是抽象方法
阅读全文

Go 1.23 新版本新特性之迭代器

Go1.23新特性Go 1.23 版本于2024年8月14日发布,带来了多项重大更新。本文将重点介绍 Go 1.23 版本中的迭代器(iterator)功能,这是对 Go 语言生态系统的一次重要改进。 为什么引入标准迭代器在 Go 语言中,迭代器并非新概念,但现有的迭代器设计和使用方式各不相同。为了统一迭代器的标准化形式,Go 1.23 版本引入了标准迭代器,使得开发者只
阅读全文

Golang设计模式之代理模式

代理模式代理模式是一种结构型设计模式,它为其他对象提供一个代理以控制对这个对象的访问。代理模式在不直接访问实际对象的情况下,提供了对目标对象的间接访问。通过引入一个代理对象来间接操作实际对象,可以在不改变实际对象代码的前提下,增加额外的功能操作,如访问控制、延迟初始化、日志记录等。 代理模式中的角色 Subject(主题):定义了RealSubject和Proxy共有的接
阅读全文

Golang设计模式之适配器模式

适配器模式适配器模式是一种结构型设计模式,它允许将不兼容的接口转换为一个客户端期望的另一个接口。适配器模式使得那些接口不兼容的类可以一起工作。 适配器模式中的角色和职责 Target(目标抽象类):定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。 Adapter(适配器类):作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心。
阅读全文

Golang设计模式之单例模式

单例模式单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式常用于管理共享资源,如配置信息、线程池、缓存等。 单例模式的角色 单例(Singleton)角色:单例类负责创建自己的实例,并提供一个访问该实例的全局访问点。 Go示例下面是一个使用Go语言实现的单例模式示例。我们将创建一个简单的配置管理器,它将作为单例使用。
阅读全文