Golang atomic.SwapInt64()函数的示例
在Go语言中,原子包提供了更低级别的原子内存,有助于实现同步算法。Golang语言中的 SwapInt64() 函数用于原子地将新值存储到addr中,并返回以前的addr值。该函数在原子包中定义。在这里,您需要导入”sync/atomic”包,以便使用这些函数。
语法:
func SwapInt64(addr *int64, new int64) (old int64)
在这里,addr表示地址。new是新的int64值,而old是旧的int64值。
注意:(* int64)是指向int64值的指针。但是,int64包含从-9223372036854775808到9223372036854775807的所有有符号64位整数的集合。
返回值:它将新的int64值存储到addr中,并返回以前的addr值。
示例1:
//展示在Golang中使用SwapInt64函数的用法的程序。
//包括主要包
package main
//导入fmt和sync/atomic
import (
"fmt"
"sync/atomic"
)
//主函数
func main() {
//给int64赋值
var x int64 = 25786808555
//使用SwapInt64方法和其参数
var old_val = atomic.SwapInt64(&x, 4567898196323)
//打印新值和旧值
fmt.Println("存储新值:", x, ",旧值:", old_val)
}
输出:
存储新值:4567898196323,旧值:25786808555
示例2:
//展示在Golang中使用SwapInt64函数的用法的程序。
//包括主要包
package main
//导入fmt和sync/atomic
import (
"fmt"
"sync/atomic"
)
//主函数
func main() {
//给int64赋值
var m int64 = 78453984556
var n int64 = 364576677888
//使用SwapInt64方法和其参数
var oldVal1 = atomic.SwapInt64(&m, 78453984556)
var oldVal2 = atomic.SwapInt64(&n, 935128383)
//打印输出
fmt.Println((oldVal1) == m)
fmt.Println((oldVal2) == n)
}
输出:
true
false
在这里,oldVal1等于“m”,因为要存储的新值与旧值相同,因此返回true,但是oldVal2不等于“n”,因为旧值不与新分配的值相似,因此返回false。
极客教程