Golang atomic.SwapUint64()函数及示例
在Go语言中,原子包提供了较低级别的原子内存,有助于实现同步算法。在Go语言中, SwapUint64() 函数用于将新值原子存储到addr中,并返回先前的addr值。此函数在原子包中定义。在此,您需要导入“sync/atomic”包以使用这些函数。
语法:
func SwapUint64(addr *uint64, new uint64) (old uint64)
这里,addr表示地址。new是新的uint64值,old是旧的uint64值。
注意:(*uint64)是指向uint64值的指针。而uint64是一个64位大小的整数类型。但是,uint64包含从0到18446744073709551615的所有无符号64位整数的集合。
返回值:它将新的uint64值存储在addr中,并返回先前的addr值。
示例1:
//演示在Golang中使用SwapUint64函数的方法
//包括主函数
package main
//导入fmt和sync/atomic
import (
"fmt"
"sync/atomic"
)
//主函数
func main() {
//为uint64分配值
var x uint64 = 10864545453
//使用SwapUint64方法
//with其参数
var old_val = atomic.SwapUint64(&x;, 65353443)
//打印新旧值
fmt.Println("Stored new value: ",
x, ", Old value: ", old_val)
}
输出:
Stored new value: 65353443,Old value: 10864545453
示例2:
//示例:在Golang中使用SwapUint64函数
//包括主函数
package main
//导入fmt和sync/atomic
import (
"fmt"
"sync/atomic"
)
//主函数
func main() {
//为uint64分配值
var m uint64 = 11735344343
var n uint64 = 976364747
//使用SwapUint64方法
//与其参数一起
var oldVal1 = atomic.SwapUint64(&m;, 11735344343)
var oldVal2 = atomic.SwapUint64(&n;, 6586850111)
//打印输出
fmt.Println((oldVal1) == m)
fmt.Println((oldVal2) == n)
}
输出:
true
false
在这里,oldVal1等于“m”,因为要存储在*addr中的新值与旧值相同,因此返回true,但是oldVal2不等于“n”,因为旧值与新分配的值不相同,因此返回false。
极客教程