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.