Funciones en Go

Author
Por Darío Rivera
Publicado el 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.


Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.