Golang atomic.StoreInt64()函数及其示例
在Go语言中,原子包提供了低级原子内存,有助于实现同步算法。Go语言中的 StoreInt64() 函数用于将val原子地存储到*addr中。该函数在原子包中定义。在此处,您需要导入“sync / atomic”包,以便使用这些函数。
语法:
func StoreInt64(addr *int64, val int64)
这里,addr指示地址。
注意:(* int64)是指向int64值的指针。但是,int64包含所有带符号的64位整数集,从-9223372036854775808到9223372036854775807。
返回值:将val存储在*addr中,然后在需要时可以返回它。
示例1:
//程序演示了
//使用Golang中的StoreInt64函数
//包含主要包
package main
// 导入 fmt 和 sync / atomic
import (
"fmt"
"sync/atomic"
)
//主函数
func main() {
// 为存储val的地址定义变量
var (
x int64
y int64
)
// 使用 StoreInt64 方法
// 和它的参数
atomic.StoreInt64(&x, 6777676777)
atomic.StoreInt64(&y, 98877)
// 显示存储在addr中的值
fmt.Println(atomic.LoadInt64(&x))
fmt.Println(atomic.LoadInt64(&y))
}
输出:
6777676777
98877
这里,首先将int64值存储在定义的地址中,然后使用上面的LoadInt64()方法返回它们。
示例2:
//程序演示了
//使用Golang中的StoreInt64函数
//包含主要包
package main
// 导入 fmt 和 sync / atomic
import (
"fmt"
"sync/atomic"
)
//主函数
func main() {
// 为存储val的地址定义变量
var (
x int64
)
// 使用 StoreInt64 方法
// 和它的参数
atomic.StoreInt64(&x, 3654567899788)
// 加载存储的val
z := atomic.LoadInt64(&x)
// 如果值相同则返回true
// 否则返回false
fmt.Println(z == x)
// 如果地址相同则返回true
// 否则返回false
fmt.Println(&z == &x)
}
输出:
true
false
这里,存储和加载的值相同,因此返回true,但它们的地址不同,因此在这种情况下返回false。
极客教程