Hollis

<span style="font-weight: bold;">Hollis写字的地方...</span>

Leng-xuan-2's Leetcode chart

原子操作

atomic包

atomic 提供的原子操作能够确保任一时刻只有一个 goroutine 对变量进行操作,善用 atomic 能够避免程序中出现大量的锁操作。

atomic常见操作有:

  • 增减
  • 载入
  • 比较并交换
  • 交换
  • 存储

增减操作

在 Go 语言的 sync/atomic 包中,提供了一系列原子操作函数,其中包括增减操作。这些函数能够确保在并发环境中对变量进行安全地增减操作,避免了竞态条件和数据竞争问题。下面详细介绍了 sync/atomic 包中的增减操作:

类型别名和类型定义

类型别名

类型别名是用来给现有类型提供一个替代的名称。它并不会创建一个新的类型,而是给现有类型起一个别名,两者在类型系统中是完全相同的。类型别名的声明使用 type 关键字,并且使用赋值符号(=)来定义别名。

如:type MyInt = int 是类型别名(type alias),它创建了一个已存在类型的别名。这意味着 MyIntint 是完全相同的类型,它们可以互换使用,没有任何区别。这个功能主要用于提高代码的可读性,尤其是在代码中需要使用相同类型的不同命名时。例如:

new和make的区别

在Go语言中,newmake 是两个用于分配内存的关键字,它们的作用有所不同。

new

  • new 用于创建一个指向新分配的零值的指针,返回的是指针。对于指针、引用类型(slice、map 和 channel),new 返回的是指针。
  • new 分配内存,但不对内存进行初始化,返回指针。
  • 主要用于初始化值类型(比如 struct)的内存空间。

示例:

0%