Funciones en el lenguaje Go
Las funciones son bloques de código básicos que se utilizan para ejecutar una tarea.
El lenguaje Go tiene al menos una función main().
Puedes dividir diferentes funcionalidades mediante funciones; lógicamente, cada función ejecuta una tarea específica.
La declaración de una función le indica al compilador el nombre de la función, el tipo de retorno y los parámetros.
La biblioteca estándar del lenguaje Go proporciona una variedad de funciones integradas disponibles. Por ejemplo, la función len() puede aceptar parámetros de diferentes tipos y devolver la longitud de ese tipo. Si pasamos una cadena, devuelve la longitud de la cadena; si pasamos un array, devuelve el número de elementos contenidos en el array.
Definición de funciones
El formato de definición de funciones en el lenguaje Go es el siguiente:
func function_name( [parameter list] ) [return_types] {
函数体
}
Análisis de la definición de funciones:
- func: la función se declara comenzando con func
- function_name: el nombre de la función, la lista de parámetros y el tipo de retorno constituyen la firma de la función.
- lista de parámetros: la lista de parámetros; los parámetros son como marcadores de posición. Cuando se llama a la función, puedes pasar valores a los parámetros, y estos valores se denominan argumentos reales. La lista de parámetros especifica los tipos de parámetros, el orden y el número de parámetros. Los parámetros son opcionales, es decir, la función también puede no contener parámetros.
- return_types: el tipo de retorno; la función devuelve una lista de valores. return_types es el tipo de datos de esa lista de valores. Algunas funciones no necesitan devolver un valor; en ese caso, return_types no es obligatorio.
- Cuerpo de la función: el conjunto de código de la definición de la función.
Ejemplo
El siguiente ejemplo es el código de la función max(), que recibe dos parámetros enteros num1 y num2, y devuelve el valor máximo de estos dos parámetros:
Ejemplo
func max(num1, num2 int) int {
/* Declarar variables locales */
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
Llamada a funciones
Cuando creas una función, defines lo que la función debe hacer; al llamar a esa función se ejecuta la tarea especificada.
Llama a la función, pasa parámetros a la función y devuelve valores, por ejemplo:
Ejemplo
import "fmt"
func main() {
/* Definir variables locales */
var a int = 100
var b int = 200
var ret int
/* Llamar a la función y devolver el valor máximo */
ret = max(a, b)
fmt.Printf( "El valor máximo es: %d\n", ret )
}
/* La función devuelve el valor máximo de dos números */
func max(num1, num2 int) int {
/* Definir variables locales */
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
El ejemplo anterior llama a la función max() dentro de la función main(), y el resultado de la ejecución es:
最大值是 : 200
Las funciones devuelven múltiples valores
Las funciones en Go pueden devolver múltiples valores, por ejemplo:
Ejemplo
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("Google", "Ejemplo")
fmt.Println(a, b)
}
El resultado de ejecución del ejemplo anterior es:
Ejemplo Google
Parámetros de funciones
Si una función usa parámetros, esas variables se pueden llamar parámetros formales de la función.
Los parámetros formales son como variables locales definidas dentro del cuerpo de la función.
Al llamar a una función, se pueden pasar parámetros de dos maneras:
| Tipo de paso | Descripción |
|---|---|
| Paso por valor | El paso por valor significa que al llamar a la función, se copia el argumento real y se pasa a la función; de esta manera, si se modifica el parámetro dentro de la función, no afectará al argumento real. |
| Paso por referencia | El paso por referencia significa que al llamar a la función, se pasa la dirección del argumento real a la función; entonces, las modificaciones realizadas al parámetro dentro de la función afectarán al argumento real. |
De forma predeterminada, el lenguaje Go utiliza el paso por valor, es decir, durante la llamada no se afecta al argumento real.
Uso de funciones
| Uso de funciones | Descripción |
|---|---|
| Función como argumento real de otra función | Una vez definida una función, se puede pasar como argumento real a otra función. |
| Clausura | Una clausura es una función anónima que se puede utilizar en programación dinámica. |
| Método | Un método es una función que contiene un receptor. |