Declaración de funciones
En los laboratorios anteriores, independientemente de si el programa era simple o complejo, solo utilizamos la función main para realizar operaciones.
Un programa solo puede tener una función main, que es el punto de entrada del programa. Cuando ejecutamos el programa, otras funciones se llaman y ejecutan directamente o indirectamente dentro de la función main.
Ahora echemos un vistazo a la sintaxis de las funciones:
func functionName(parameters...)(returnValues...){
code block
}
Aquí, el nombre de la función se utiliza para identificarla. Las siguientes reglas se aplican al nombre de la función:
- Puede consistir en letras, números y guiones bajos. Sin embargo, la primera letra del nombre de la función no puede ser un número. Por ejemplo,
func 3ab(){} no es válido.
- Cuando la primera letra es mayúscula, puede ser referenciada por código en paquetes externos. Cuando la primera letra es minúscula, solo puede ser utilizada dentro del paquete. Esto es similar a las funciones públicas y privadas.
La lista de parámetros declara la cantidad y el tipo de parámetros que se pasan a la función:
-
La lista de parámetros puede estar vacía o contener múltiples parámetros.
-
Cada parámetro consiste en un nombre de parámetro y un tipo de parámetro. Por ejemplo, en la lista de parámetros siguiente, declaramos dos variables del tipo int.
func test(a, b int) (res int){}
La lista de valores de retorno se utiliza para devolver los valores necesarios después de que se ejecute la función:
-
La lista de valores de retorno es similar a la lista de parámetros. La cantidad de parámetros puede ser cualquier valor.
-
Generalmente, la lista de retorno consiste en nombres de variables y tipos de variables, y el nombre de la variable es opcional.
-
Si solo se devuelve una variable y solo se declara el tipo de variable, se pueden omitir los paréntesis. Por ejemplo:
func test(a int, b string) int{}
Cuando los tipos de parámetros son iguales, podemos utilizar el modo de escritura corta. Las dos funciones siguientes tienen la misma funcionalidad:
func test(a, b int, c, d string)(res1, res2 int, res3 string){}
// Short writing mode
func test(a, b int, c, d string)(res1, res2 int, res3 string){}
Reemplaza el contenido de func.go con el siguiente código:
package main
import "fmt"
func check(divisor int) bool {
if divisor == 0 {
fmt.Println("The divisor cannot be 0")
return false
}
return true
}
func main() {
a1, b1 := 12, 4
a2, b2 := 12, 0
// Use the check function before division
if check(b1) {
fmt.Println(a1 / b1)
}
if check(b2) {
fmt.Println(a2 / b2)
}
}
Ejecuta el programa nuevamente:
go run func.go
Deberías ver la misma salida:
3
The divisor cannot be 0
Esta vez, la lógica de comprobación está encapsulada en la función check, lo que hace que el código sea más limpio y reutilizable.