Funciones en Go
En un post anterior hemos visto a grandes rasgos la estructura de un programa en Go, el día de hoy veremos un concepto muy importante en Go el cuál son las funciones. Para esto, observemos el siguiente programa:
Definición de funciones
Para la definción de las funciones en Go tomemos como base el siguiente programa.
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func sub(x, y int) int {
return x - y
}
func main() {
fmt.Println("42 + 13 = ", add(42, 13))
fmt.Println("42 - 13 = ", sub(42, 13))
}
Y veamos que:
( 1 ) La palabra reservada func
define la declaración de una función.
( 2 ) El tipo de un parámetro de función va después del nombre de dicho parámetro.
( 3 ) Cuando dos o más parámetros consecutivos comparten el mismo tipo se puede omitir el tipo de todos menos el del último.
Múltiples valores de retorno
Una función en Go puede retornar más de un valor simultáneamente.
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
}
Nótese que lo que era antes un tipo de valor de retorno es ahora una dupla de valores de retorno encerrada entre paréntesis (string, string
). Al utilizar una función que retorne más de un valor de manera simultánea es necesario indicar cada variable en la asignación de dichos valores de retorno (a, b :=
).
Valores de retorno con nombre
Los valores de retorno pueden ser nombrados tal y como se hace con los parámetros de una función.
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
En este caso basta con realizar una asignación sobre los nombres de las variables de retorno y utilizar un "naked return" para devolver los valores. Al igual que los valores de retorno para funciones que devuelven más de un valor, los valores de retorno nombrados deben estar encerrados entre paréntesis sin importar si es un solo valor el que se retorna o varios.
En un próximo post veremos los tipos de datos en Go. Hasta la próxima.