Función atomic.SwapInt64() 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 SwapInt64() en el lenguaje Go se usa para almacenar atómicamente un nuevo valor en *addr y devuelve el valor anterior de *addr . Esta función se define en el paquete atómico. Aquí, debe importar el paquete «sync/atomic» para usar estas funciones.

Sintaxis:

func SwapInt64(addr *int64, new int64) (old int64)

Aquí, addr indica dirección. Y new es el nuevo valor de int64 y old es el valor de int64 anterior.

Nota: (*int64) es el puntero a un valor int64. Sin embargo, int64 contiene el conjunto de todos los enteros de 64 bits con signo desde -9223372036854775808 hasta 9223372036854775807.

Valor de retorno: Almacena el nuevo valor int64 en *addr y devuelve el valor anterior de *addr.

Ejemplo 1:

// Program to illustrate the usage of
// SwapInt64 function in Golang
  
// Including main package
package main
  
// Importing fmt and sync/atomic
import (
    "fmt"
    "sync/atomic"
)
  
// Main function
func main() {
  
    // Assigning value to int64
    var x int64 = 25786808555
  
    // Using SwapInt64 method 
    // with its parameters
    var old_val = atomic.SwapInt64(&x, 4567898196323)
  
    // Prints new and old value
    fmt.Println("Stored new value: ", 
         x, ", Old value: ", old_val)
}

Producción:

Stored new value:  4567898196323, Old value:  25786808555

Ejemplo 2:

// Program to illustrate the usage of
// SwapInt64 function in Golang
  
// Including main package
package main
  
// Importing fmt and sync/atomic
import (
    "fmt"
    "sync/atomic"
)
  
// Main function
func main() {
  
    // Assigning value to int64
    var m int64 = 78453984556
    var n int64 = 364576677888
  
    // Using SwapInt64 method with its parameters
    var oldVal1 = atomic.SwapInt64(&m, 78453984556)
    var oldVal2 = atomic.SwapInt64(&n, 935128383)
  
    // Prints output
    fmt.Println((oldVal1) == m)
    fmt.Println((oldVal2) == n)
}

Producción:

true
false

Aquí, oldVal1 es igual a «m», ya que el nuevo valor que se almacenará en *addr es el mismo que el valor anterior, por lo que se devuelve verdadero, pero oldVal2 no es igual a «n», ya que el valor anterior no es similar al valor recién asignado, por lo tanto, se devuelve falso.

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 *