Go - Funciones

Una función es un grupo de declaraciones que juntas realizan una tarea. Cada programa Go tiene al menos una función, que esmain(). Puede dividir su código en funciones separadas. La forma en que divide su código entre las diferentes funciones depende de usted, pero lógicamente, la división debe ser tal que cada función realice una tarea específica.

Una función declarationinforma al compilador sobre el nombre de una función, el tipo de retorno y los parámetros. Una funcióndefinition proporciona el cuerpo real de la función.

La biblioteca estándar de Go proporciona numerosas funciones integradas a las que puede llamar su programa. Por ejemplo, la funciónlen()toma argumentos de varios tipos y devuelve la longitud del tipo. Si se le pasa una cadena, la función devuelve la longitud de la cadena en bytes. Si se le pasa una matriz, la función devuelve la longitud de la matriz.

Las funciones también se conocen como method, sub-routineo procedure.

Definición de una función

La forma general de una definición de función en el lenguaje de programación Go es la siguiente:

func function_name( [parameter list] ) [return_types]
{
   body of the function
}

Una definición de función en el lenguaje de programación Go consta de un encabezado de función y un cuerpo de función . Aquí están todas las partes de una función:

  • Func - Inicia la declaración de una función.

  • Function Name- Es el nombre real de la función. El nombre de la función y la lista de parámetros juntos constituyen la firma de la función.

  • Parameters- Un parámetro es como un marcador de posición. Cuando se invoca una función, se pasa un valor al parámetro. Este valor se conoce como parámetro o argumento real. La lista de parámetros se refiere al tipo, orden y número de parámetros de una función. Los parámetros son opcionales; es decir, una función puede no contener parámetros.

  • Return Type- Una función puede devolver una lista de valores. Return_types es la lista de tipos de datos de los valores que devuelve la función. Algunas funciones realizan las operaciones deseadas sin devolver un valor. En este caso, return_type no es obligatorio.

  • Function Body - Contiene una colección de declaraciones que definen lo que hace la función.

Ejemplo

El siguiente código fuente muestra una función llamada max(). Esta función toma dos parámetros num1 y num2 y devuelve el máximo entre los dos -

/* function returning the max between two numbers */
func max(num1, num2 int) int {
   /* local variable declaration */
   result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result 
}

Llamar a una función

Al crear una función Go, da una definición de lo que tiene que hacer la función. Para usar una función, tendrá que llamar a esa función para realizar la tarea definida.

Cuando un programa llama a una función, el control del programa se transfiere a la función llamada. Una función llamada realiza una tarea definida y cuando se ejecuta su declaración de retorno o cuando se alcanza su llave de cierre de fin de función, devuelve el control del programa al programa principal.

Para llamar a una función, simplemente necesita pasar los parámetros requeridos junto con su nombre de función. Si la función devuelve un valor, puede almacenar el valor devuelto. Por ejemplo

package main

import "fmt"

func main() {
   /* local variable definition */
   var a int = 100
   var b int = 200
   var ret int

   /* calling a function to get max value */
   ret = max(a, b)

   fmt.Printf( "Max value is : %d\n", ret )
}

/* function returning the max between two numbers */
func max(num1, num2 int) int {
   /* local variable declaration */
   var result int

   if (num1 > num2) {
      result = num1
   } else {
      result = num2
   }
   return result 
}

Hemos mantenido la función max () junto con la función main () y hemos compilado el código fuente. Mientras se ejecuta el ejecutable final, producirá el siguiente resultado:

Max value is : 200

Devolver varios valores de la función

Una función Go puede devolver varios valores. Por ejemplo

package main

import "fmt"

func swap(x, y string) (string, string) {
   return y, x
}
func main() {
   a, b := swap("Mahesh", "Kumar")
   fmt.Println(a, b)
}

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

Kumar Mahesh

Argumentos de función

Si una función va a utilizar argumentos, debe declarar variables que acepten los valores de los argumentos. Estas variables se denominanformal parameters de la función.

Los parámetros formales se comportan como otras variables locales dentro de la función y se crean al entrar en la función y se destruyen al salir.

Al llamar a una función, hay dos formas en que se pueden pasar argumentos a una función:

No Señor Tipo de llamada y descripción
1 Llamar por valor

Este método copia el valor real de un argumento en el parámetro formal de la función. En este caso, los cambios realizados en el parámetro dentro de la función no tienen ningún efecto en el argumento.

2 Llamar por referencia

Este método copia la dirección de un argumento en el parámetro formal. Dentro de la función, la dirección se usa para acceder al argumento real usado en la llamada. Esto significa que los cambios realizados en el parámetro afectan el argumento.

De forma predeterminada, Go usa la llamada por valor para pasar argumentos. En general, significa que el código dentro de una función no puede alterar los argumentos utilizados para llamar a la función. El programa anterior, mientras llamaba a la función max (), utilizó el mismo método.

Uso de funciones

Una función se puede utilizar de las siguientes formas:

No Señor Uso y descripción de la función
1 Función como valor

Las funciones se pueden crear sobre la marcha y se pueden utilizar como valores.

2 Cierres de funciones

Los cierres de funciones son funciones anónimas y pueden usarse en programación dinámica.

3 Método

Los métodos son funciones especiales con un receptor.