Declaração de Funções
Nos laboratórios anteriores, independentemente de o programa ser simples ou complexo, usamos apenas a função main para as operações.
Um programa pode ter apenas uma função main, que é o ponto de entrada do programa. Quando executamos o programa, outras funções são chamadas e executadas direta ou indiretamente dentro da função main.
Agora, vamos dar uma olhada na sintaxe das funções:
func functionName(parameters...)(returnValues...){
code block
}
Aqui, o nome da função é usado para identificar a função. As seguintes regras se aplicam ao nome da função:
- Pode consistir em letras, números e sublinhados. No entanto, a primeira letra do nome da função não pode ser um número. Por exemplo,
func 3ab(){} não é válido.
- Quando a primeira letra é maiúscula, ela pode ser referenciada por código em pacotes externos. Quando a primeira letra é minúscula, ela só pode ser usada dentro do pacote. Isso é semelhante às funções públicas e privadas.
A lista de parâmetros declara o número e o tipo de parâmetros passados para a função:
-
A lista de parâmetros pode estar vazia ou conter múltiplos parâmetros.
-
Cada parâmetro consiste em um nome de parâmetro e um tipo de parâmetro. Por exemplo, na lista de parâmetros abaixo, declaramos duas variáveis do tipo int.
func test(a, b int) (res int){}
A lista de valores de retorno é usada para retornar os valores necessários após a execução da função:
-
A lista de valores de retorno é semelhante à lista de parâmetros. O número de parâmetros pode ser qualquer valor.
-
Geralmente, a lista de retorno consiste em nomes de variáveis e tipos de variáveis, e o nome da variável é opcional.
-
Se apenas uma variável for retornada e apenas o tipo da variável for declarado, os parênteses podem ser omitidos. Por exemplo:
func test(a int, b string) int{}
Quando os tipos de parâmetros são os mesmos, podemos usar o modo de escrita abreviada. As duas funções abaixo têm a mesma funcionalidade:
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){}
Substitua o conteúdo de func.go pelo seguinte 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)
}
}
Execute o programa novamente:
go run func.go
Você deve ver a mesma saída:
3
The divisor cannot be 0
Desta vez, a lógica de verificação é encapsulada na função check, tornando o código mais limpo e reutilizável.