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.