在 Go 语言中,原子包提供较低级别的原子内存,这有助于实现同步算法。 Go语言中的Store()函数用于将Value的值设置为x(即接口)。
并且所有对指定值的Store方法的调用都应该使用相同的具体类型的值。此外,矛盾类型的Store将调用panic 。这个函数是在 atomic 包下定义的。在这里,您需要导入“sync/atomic”包才能使用这些功能。
句法:
func (v *Value) Store(x interface{})
这里, v是任意类型的值, x是接口,是 Store 方法的输出结果类型。
注意: (*Value) 是指向Value类型的指针。同步/原子标准包中提供的值类型用于原子地存储和加载任何类型的值。
返回值:它存储提供的值,可以在需要时加载。
示例 1:
// Program to illustrate the usage of
// Store function in Golang
// Including main package
package main
// importing fmt and sync/atomic
import (
"fmt"
"sync/atomic"
)
// Main function
func main() {
// Defining a struct type L
type L struct{ x, y, z int }
// Defining a variable to assign
// values to the struct type L
var r1 = L{9, 10, 11}
// Defining Value type to store
// values of any type
var V atomic.Value
// Calling Store function
V.Store(r1)
// Printed if the value stated is stored
fmt.Println("Any type of value is stored!")
}
输出:
Any type of value is stored!
在上面的例子中,我们使用了Value类型来存储任何类型的值。这些值存储在 r1 中,这是声明的接口。
示例 2:
// Program to illustrate the usage of
// Store function in Golang
// Including main package
package main
// importing fmt and sync/atomic
import (
"sync/atomic"
)
// Main function
func main() {
// Defining a struct type L
type L struct{ x, y, z int }
// Defining a variable to assign
// values to the struct type L
var r1 = L{9, 10, 11}
// Defining Value type to store
// values of any type
var V atomic.Value
// Calling Store function
V.Store(r1)
// Storing value of
// different concrete type
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。