¿Cómo pasar un Slice a Function en Golang?

Slice es una secuencia de longitud variable que almacena elementos de un tipo similar, no está permitido almacenar diferentes tipos de elementos en el mismo segmento. Es como una array que tiene un valor de índice y una longitud, pero el tamaño del segmento cambia de tamaño, no tienen un tamaño fijo como una array. En el lenguaje Go, puede pasar un segmento a una función , lo que significa que la función obtiene la copia del segmento.
El segmento se pasa por valor a una función junto con la capacidad del segmento, la longitud y el puntero .del segmento siempre apunta a la array subyacente. Entonces, si hicimos algún cambio en el segmento que se pasa a la función por valor, se reflejará en el segmento presente fuera de la función. Analicemos este concepto con la ayuda de un ejemplo:

Ejemplo 1:

// Go program to illustrate how to
// pass a slice to the function
package main
  
import "fmt"
  
// Function in which slice
// is passed by value
func myfun(element []string) {
  
    // Modifying the given slice
    element[2] = "Java"
    fmt.Println("Modified slice: ", element)
}
  
// Main function
func main() {
  
    // Creating slice
    slc := []string{"C#", "Python", "C", "Perl"}
      
    fmt.Println("Initial slice: ", slc)
  
    // Passing the slice to the function
    myfun(slc)
      
    fmt.Println("Final slice:", slc)
  
}

Producción:

Initial slice:  [C# Python C Perl]
Modified slice:  [C# Python Java Perl]
Final slice: [C# Python Java Perl]

Explicación: En el ejemplo anterior, tenemos un segmento llamado slc . Este segmento se pasa en la función myfun() . Como sabemos, el puntero de corte siempre apunta a la misma referencia, incluso si pasaron una función. Entonces, cuando cambiamos el valor C a Java presente en el valor de índice 2. Este cambio también refleja el segmento presente fuera de la función, por lo que el segmento final después de la modificación es [ C# Python Java perl] .

Ejemplo 2:

// Go program to illustrate how to
// pass a slice to the function
package main
  
import "fmt"
  
// Function in which slice
// is passed by value
func myfun(element []string) {
  
    // Here we only modify the slice
    // Using append function
    // Here, this function only modifies
    // the copy of the slice present in 
    // the function not the original slice
    element = append(element, "Java")
    fmt.Println("Modified slice: ", element)
}
  
// Main function
func main() {
  
    // Creating a slice
    slc := []string{"C#", "Python", "C", "Perl"}
      
    fmt.Println("Initial slice: ", slc)
  
    // Passing the slice
    // to the function
      
    myfun(slc)
    fmt.Println("Final slice: ", slc)
  
}

Producción:

Initial slice:  [C# Python C Perl]
Modified slice:  [C# Python C Perl Java]
Final slice:  [C# Python C Perl]

Publicación traducida automáticamente

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