Golang atomic.Store()函数和示例

Golang atomic.Store()函数和示例

在Go语言中,atomic包提供了较低级别的原子内存,有助于实现同步算法。在Go语言中, Store() 函数用于将Value的值设置为x(即接口)。
而且,指定的Value的所有Store方法调用应使用相同具体类型的值。此外,使用矛盾类型的Store会调用panic。此函数在原子包中定义。在此处,需要导入“sync/atomic”包才能使用这些函数。

语法:

func (v *Value) Store(x interface{})

在这里,v是任何类型的值,x是Store方法的输出结果类型的接口。

注:(*Value)是指向Value类型的指针。提供在sync/atomic标准包中使用的Value类型用于原子地存储和加载任何类型的值。

返回值:它存储提供的值,并在需要时可以加载。

示例1:

//程序演示在Golang中使用Store函数
 
#包括主包
package main

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

//主函数
func main() {

    //定义结构体类型L
    type L struct{ x,y,z int }

    //定义要分配的变量
    //到结构类型L
    var r1 = L{9, 10, 11}

    //定义Value类型来存储
    //任何类型的值
    var V atomic.Value

    //调用Store函数
    V.Store(r1)

    //打印如果存储了说明的值
    fmt.Println("存储了任何类型的值!")
} 

输出:

存储了任何类型的值!

在上面的示例中,我们使用 Value 类型来存储任何类型的值。这些值存储在指定的接口r1中。

示例2:

//程序演示在Golang中使用Store函数
 
#包括主包
package main

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

//主函数
func main() {

    //定义结构体类型L
    type L struct{ x,y,z int }

    //定义要分配的变量
    //到结构类型L
    var r1 = L{9, 10, 11}

    //定义Value类型来存储
    //任何类型的值
    var V atomic.Value

    //调用Store函数
    V.Store(r1)

    //存储不同具体类型的值
    V.Store("GeeksforGeeks")
} 

输出:

panic: sync/atomic: store of inconsistently typed value into Value

goroutine 1 [running]:
sync/atomic.(*Value).Store(0x40c018, 0x99a40, 0xb23e8, 0x40e010)
    /usr/local/go/src/sync/atomic/value.go:77 +0x160
main.main()
    /tmp/sandbox206117237/prog.go:31 +0xc0

在上面的示例中,存储的值为不同具体类型,因此调用panic。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程