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 SwapUint64() 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 SwapUint64(addr *uint64, new uint64) (old uint64)
Aquí, addr indica dirección. Y new es el nuevo valor de uint64 y old es el valor de uint64 anterior.
Nota: (*uint64) es el puntero a un valor uint64. Y uint64 es un tipo entero de tamaño de bit 64. Sin embargo, uint64 contiene el conjunto de todos los enteros de 64 bits sin signo de 0 a 18446744073709551615.
Valor devuelto : almacena el nuevo valor de uint64 en *addr y devuelve el valor anterior de *addr.
Ejemplo 1:
// Program to illustrate the usage of // SwapUint64 function in Golang // Including main package package main // Importing fmt and sync/atomic import ( "fmt" "sync/atomic" ) // Main function func main() { // Assigning value to uint64 var x uint64 = 10864545453 // Using SwapUint64 method // with its parameters var old_val = atomic.SwapUint64(&x, 65353443) // Prints new and old value fmt.Println("Stored new value: ", x, ", Old value: ", old_val) }
Producción:
Stored new value: 65353443, Old value: 10864545453
Ejemplo 2:
// Program to illustrate the usage of // SwapUint64 function in Golang // Including main package package main // Importing fmt and sync/atomic import ( "fmt" "sync/atomic" ) // Main function func main() { // Assigning value to uint64 var m uint64 = 11735344343 var n uint64 = 976364747 // Using SwapUint64 method // with its parameters var oldVal1 = atomic.SwapUint64(&m, 11735344343) var oldVal2 = atomic.SwapUint64(&n, 6586850111) // 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 un valor anterior, por lo que se devuelve verdadero, pero oldVal2 no es igual a «n», ya que el valor anterior no es similar a el 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