Función reflect.Swapper() en Golang con ejemplos

El lenguaje Go proporciona una implementación de soporte incorporada de la reflexión en tiempo de ejecución y permite que un programa manipule objetos con tipos arbitrarios con la ayuda del paquete de reflexión. La función reflect.Swapper() en Golang se usa para intercambiar los elementos en el segmento proporcionado. Para acceder a esta función, es necesario importar el paquete reflect en el programa.

Sintaxis:

func Swapper(slice interface{}) func(i, j int)

Parámetros: Esta función toma un parámetro de tipo Slice.

Valor devuelto: esta función devuelve el segmento intercambiado.

Los siguientes ejemplos ilustran el uso del método anterior en Golang:

Ejemplo 1:

// Golang program to illustrate
// reflect.Swapper() Function 
   
package main
   
import (
    "fmt"
    "reflect"
)
   
// Main function 
func main() {
   
    // Slice 
    src := []int{1, 2, 3, 4, 5}
  
    fmt.Printf("Before swap: %v\n", src)
       
    // Swapper() function is used
    // to swaps the elements in 
    // the provided slice
    swapF := reflect.Swapper(src) 
  
    swapF(2, 4)
       
    // printing the values
    fmt.Printf("After swap: %v\n", src)
}

Producción:

Before swap: [1 2 3 4 5]
After swap: [1 2 5 4 3]

Ejemplo 2: Invertir un segmento usando la función Swapper()

// Golang program to illustrate
// reflect.Swapper() Function 
   
package main
   
import (
    "fmt"
    "reflect"
)
   
// Main function 
func main() {
   
    // Slice 
    src := []int{1, 2, 3, 4, 5, 6, 7}
  
    fmt.Printf("Original Slice: %v\n", src)
       
    // Swapper() function is used
    // to swaps the elements in 
    // the provided slice
    swapF := reflect.Swapper(src)
  
    for i := 0; i < len(src)/2; i++ {
        swapF(i, len(src)-1-i)
    }
       
    // printing the values
    fmt.Printf("Reversed Slice: %v\n", src)
}

Producción:

Original Slice: [1 2 3 4 5 6 7]
Reversed Slice: [7 6 5 4 3 2 1]

Ejemplo 3: Clasificación de un segmento usando la función Swapper()

// Golang program to illustrate
// reflect.Swapper() Function 
   
package main
   
import (
    "fmt"
    "reflect"
)
   
// Main function 
func main() {
   
    // Slice 
    src := []int{1, 2, 6, 3, 8, 0, 7, 9, 5, 4, 42, 1, 3, 4, 3}
  
    fmt.Printf("Original Slice: %v\n", src)
       
    // Swapper() function is used
    // to swaps the elements in 
    //the provided slice
    swapF := reflect.Swapper(src)
  
    for i := 0; i < len(src)-1; i++ {
        for j := i + 1; j < len(src); j++ {
            if src[i] > src[j] {
                swapF(i, j)
            }
        }
    }
       
    //printing the values
    fmt.Printf("Sorted Slice: %v\n", src)
}

Producción:

Original Slice: [1 2 6 3 8 0 7 9 5 4 42 1 3 4 3]
Sorted Slice: [0 1 1 2 3 3 3 4 4 5 6 7 8 9 42]

Publicación traducida automáticamente

Artículo escrito por SHUBHAMSINGH10 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 *