Golang atomic.SwapInt32()函数及示例

Golang atomic.SwapInt32()函数及示例

在Go语言中,atomic包提供了更低级别的原子存储器,这对于实现同步算法很有帮助。 在Go语言中,swapInt32()函数用于原子转换新值到addr并返回先前的addr值。这个函数在atomic包中定义。 在这里,您需要导入”sync/atomic”包以使用这些函数。

语法:

func SwapInt32(addr *int32, new int32) (old int32)

在这里,addr表示地址。new是新的int32值,old是旧的int32值。

注意:(*int32)是指向int32值的指针。但是,int32包含所有带符号的32位整数-2147483648到2147483647的集合。

返回值:它将新int32值存储到addr中并返回旧的addr值。

示例1:

//演示使用SwapInt32函数的程序
//包括主要包
package main

//导入fmt和sync/atomic
import (
   "fmt"
   "sync/atomic"
)

//主要功能
func main() {

   //对int32赋值
   var x int32 = 5435435

   //使用SwapInt32方法
   //使用其参数
   var old_val = atomic.SwapInt32(&x, 6365654)

   //打印新旧值
   fmt.Println("存储新值:", x,",旧值:",old_val)
} 

输出:

存储新值:6365654,旧值:5435435

示例2:

//演示使用SwapInt32函数的程序
//包括主要包
package main

//导入fmt和sync/atomic
import (
    "fmt"
    "sync/atomic"
)

//主要功能
func main() {

    //对int32赋值
    var m int32 = 1223344
    var n int32 = 6122082

    //使用SwapInt32方法
    //使用其参数
    var oldVal1 = atomic.SwapInt32(&m, 1223344)
    var oldVal2 = atomic.SwapInt32(&n, 16677)

    //打印输出
    fmt.Println((oldVal1) == m)
    fmt.Println((oldVal2) == n)
} 

输出:

true
false

在这里,oldVal1等于”m”,因为要存储在*addr中的新值与旧值相同,因此返回true,但是oldVal2不等于“n”,因为旧值与新分配的值不同,因此返回false。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程