Translate

domingo, 23 de octubre de 2022

Funciones en Go


Una función es un grupo de declaraciones que existen dentro de un programa con el propósito de realizar una tarea específica. En un nivel alto, una función toma una entrada y devuelve una salida.

La función permite extraer bloques de código de uso común en un solo componente.

La función más popular en Go es main(), que se usa en todos los programas y es el punto de entrada de la ejecución. 

Una declaración de función comienza con la palabra clave func, seguida del nombre de la función, un par de paréntesis () que son los parámetros y luego un bloque que contiene el código de la función.

El siguiente ejemplo tiene una función con el nombre SimpleFunction. No toma ningún parámetro y no devuelve valores.


package main

import "fmt"

// SimpleFunction prints a message

func SimpleFunction() {

fmt.Println("Hello World")

}

func main() {

SimpleFunction()

}


Los argumentos o parámetros se especifican después del nombre de la función, entre paréntesis. Puede agregar tantos argumentos como se necesite, simplemente hay que separarlos con una coma.

El siguiente ejemplo tiene una función con dos argumentos de tipo int. Cuando se llama a la función add(), pasamos dos valores enteros (por ejemplo, 20,30).


package main

import "fmt"


// Function accepting arguments

func add(x int, y int) {

total := 0

total = x + y

fmt.Println(total)

}


func main() {

// Passing arguments

add(20, 30)

}


Si las funciones con nombres que comienzan con una letra mayúscula se exportarán a otros paquetes. Si el nombre de la función comienza con una letra minúscula, no se exportará a otros paquetes, pero puede llamar a esta función dentro del mismo paquete.

En este ejemplo, la función add() toma la entrada de dos números enteros y devuelve un valor entero con el nombre de total.

La declaración de devolución es necesaria cuando se declara un valor de devolución como parte de la firma de la función. Es decir, si digo que va devolver un tipo tengo que poner "return" y retornar un valor del tipo declarado. 


package main

import "fmt"


// Function with int as return type

func add(x int, y int) int {

total := 0

total = x + y

return total

}


func main() {

// Accepting return value in varaible

sum := add(20, 30)

fmt.Println(sum)

}


Los tipos de entrada y valor de retorno deben coincidir con la firma de la función. Si modificamos el programa anterior y pasamos algún valor de cadena en el argumento, el programa arrojará una excepción.

Golang permite nombrar los valores de retorno de una función. En este ejemplo nombramos la variable de retorno como area: 


package main

import "fmt"


func rectangle(l int, b int) (area int) {

var parameter int

parameter = 2 * (l + b)

fmt.Println("Parameter: ", parameter)

area = l * b

return // Return statement without specify variable name

}


func main() {

fmt.Println("Area: ", rectangle(20, 30))

}


Dado que la función se declara para devolver un valor de tipo int, la última declaración lógica en el flujo de ejecución debe ser una declaración de devolución que devuelva un valor del tipo declarado.

Las funciones en Golang pueden devolver múltiples valores, lo cual es una característica útil en muchos escenarios prácticos.

Este ejemplo declara una función con dos valores de retorno y la llama desde una función principal.

package main


import "fmt"


func rectangle(l int, b int) (area int, parameter int) {

parameter = 2 * (l + b)

area = l * b

return // Return statement without specify variable name

}


func main() {

var a, p int

a, p = rectangle(20, 30)

fmt.Println("Area:", a)

fmt.Println("Parameter:", p)

}

Dejo link: https://gobyexample.com/functions