Función atomic.Load() en Golang con ejemplos

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *