Ir - Pasar matrices a funciones

Si desea pasar una matriz de una sola dimensión como argumento en una función, tendría que declarar el parámetro formal de la función de una de las siguientes dos formas y los dos métodos de declaración producen resultados similares porque cada uno le dice al compilador que una matriz de enteros va para ser recibido. De manera similar, puede pasar una matriz multidimensional como parámetros formales.

Camino-1

Parámetros formales como una matriz de tamaño de la siguiente manera:

void myFunction(param [10]int)
{
.
.
.
}

Camino-2

Parámetros formales como una matriz sin tamaño de la siguiente manera:

void myFunction(param []int)
{
.
.
.
}

Ejemplo

Ahora, considere la siguiente función, que tomará una matriz como argumento junto con otro argumento y, según los argumentos pasados, devolverá el promedio de los números pasados ​​a través de la matriz de la siguiente manera:

func getAverage(arr []int, int size) float32 {
   var i int
   var avg, sum float32  

   for i = 0; i < size; ++i {
      sum += arr[i]
   }

   avg = sum / size
   return avg;
}

Ahora, llamemos a la función anterior de la siguiente manera:

package main

import "fmt"

func main() {
   /* an int array with 5 elements */
   var  balance = []int {1000, 2, 3, 17, 50}
   var avg float32

   /* pass array as an argument */
   avg = getAverage( balance, 5 ) ;

   /* output the returned value */
   fmt.Printf( "Average value is: %f ", avg );
}
func getAverage(arr []int, size int) float32 {
   var i,sum int
   var avg float32  

   for i = 0; i < size;i++ {
      sum += arr[i]
   }

   avg = float32(sum / size)
   return avg;
}

Cuando el código anterior se compila y se ejecuta, produce el siguiente resultado:

Average value is: 214.400000

Como puede ver, la longitud de la matriz no importa en lo que respecta a la función porque Go no realiza ninguna comprobación de límites para los parámetros formales.