En el lenguaje Go, los paquetes atómicos proporcionan una memoria atómica de nivel inferior que es útil para implementar algoritmos de sincronización. La función Load() en el lenguaje Go se usa para verificar el conjunto de valores de los valores más actuales almacenados por el método Store . Además, también puede devolver nil si no se han realizado llamadas al método Store para este valor . Esta función se define en el paquete atómico. Aquí, debe importar el paquete «sync/atomic» para usar estas funciones.
Sintaxis:
func (v *Value) Load() (x interface{})
Aquí, v es el valor de cualquier tipo y x es la interfaz que es el tipo de resultado de salida del método Cargar y Almacenar.
Nota: (*Valor) es el puntero a un tipo de Valor . Y el tipo de valor proporcionado en el paquete estándar de sincronización/atómico se usa para cargar atómicamente y almacenar valores de cualquier tipo.
Valor devuelto: Devuelve el conjunto de valores almacenados por el método de almacenamiento. Y también puede devolver nil si no se llama al método de almacenamiento.
Ejemplo 1:
// Program to illustrate the usage of // Load 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) // Calling Load method var r2 = V.Load().(L) // Prints values as // stored by recent // store method fmt.Println(r2) // Displays true if satisfied fmt.Println(r1 == r2) }
Producción:
{9 10 11} true
En el ejemplo anterior, hemos utilizado el tipo de valor para almacenar los valores de cualquier tipo. Y estos valores se almacenan en r1, que es la interfaz indicada. Sin embargo, estos valores se pueden devolver mediante el método Load.
Ejemplo 2:
// Program to illustrate the usage of // Load 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 Load method var r2 = V.Load().(L) // Prints values as // stored by recent // store method fmt.Println(r2) // Displays true if satisfied fmt.Println(r1 == r2) }
Producción:
panic: interface conversion: interface {} is nil, not main.L goroutine 1 [running]: main.main() /tmp/sandbox731326366/prog.go:28 +0x240
Aquí, no se ha realizado ninguna llamada al método de almacenamiento, por lo que se devuelve nil.
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA