Capítulo 06
Exemplos
Calculando média sem definir uma função para a média.
{{#include exemplo01/main.go}}
Definindo função para média.
Em Go, a palavra reservada func
define funções. A seguir, adicionamos o nome da função e seus parâmetros (zero ou mais), bem como o tipo associado de cada parâmetro. Além disso, podemos retornar zero ou mais valores, especificando seus tipos.
{{#include exemplo02/main.go}}
Nomeando retorno
Podemos dizer no memento da assinatura da função, qual variável será retornada.
{{#include exemplo03/main.go}}
Funções variádicas.
Ao escrever a assinatura de uma função, seu último parâmetro pode ser variádico. Isso significa que podemos receber uma quantidade indeterminada de valores para este parâmetro.
{{#include exemplo04/main.go}}
Funções dentro de funções
{{#include exemplo05/main.go}}
Funções acessando variáveis de outra função
{{#include exemplo06/main.go}}
Clojure
{{#include exemplo07/main.go}}
Recursão
{{#include exemplo08/main.go}}
Defer
Maneira de executar uam instrução (normalmente uma função), ao final do escopo onde está sendo lançada. Isso garante a sua execução, sempre.
{{#include exemplo09/main.go}}
Combinando de defer
+ panic
.
Isso é um anti-padrão de Go e deve ser evitado.
{{#include exemplo10/main.go}}
Função que não altera valor de x
.
Para alterarmos o valor de x
, precisamos acessar seu ponteiro, uma vez que o que é passado para a função zero()
é uma cópia do valor de x
, e não x
propriamente.
{{#include exemplo11/main.go}}
Utilizamos o &
para acessa o endereço de memória e *
para acessa o valor correspondente à este endereço.
{{#include exemplo12/main.go}}
Exercícios
Exercício 01
{{#include ex01/main.go}}
Exercício 02
{{#include ex02/main.go}}
Exercício 03
{{#include ex03/main.go}}
Exercício 04
{{#include ex04/main.go}}
Exercício 05
{{#include ex05/main.go}}
Exercício 06
{{#include ex06/main.go}}
Exercício 07
{{#include ex07/main.go}}
Exercício 08
{{#include ex08/main.go}}
Exercício 09
{{#include ex09/main.go}}
Exercício 10
{{#include ex10/main.go}}
Exercício 11
{{#include ex11/main.go}}