A aplicação em Go

Antes de colocarmos a mão na massa, precisamos apresentar alguns conceitos importantes.

Onde começa

O ponto de entrada da aplicação fica na função main() que fica no pacote main. É necessário que ela exista para que a aplicação possa ser construída, e ela será a porta de entrada para toda a aplicação.

Mas o que é um pacote e o que é uma função? Veremos esses termos mais a fundo adiante, mas por enquanto podemos adiantar que um pacote é um conjunto de um ou mais arquivos Go dentro do mesmo diretório e uma função é um pedaço de código bem delineado que pode ser reaproveitado várias vezes.

Por ser esse o ponto de entrada das aplicações, todos os nossos exemplos terão basicamente a mesma estrutura:

package main

func main() {
	// Algum código aqui
}

Na linha 1, temos a declaração do pacote: package main. Todos os arquivos Go pertencem a um pacote e todos começam dessa forma, declarando o nome do pacote na linha 1, seja ele main ou qualquer outro.

Na linha 3, começa a declaração da função main: func main() { ... }

Importações

Outra expressão que se repete muito nos arquivos Go é import <nome do pacote>, que realiza uma importação.

Uma importação torna disponível um conjunto de código (daqui pra frente, usaremos o termo biblioteca) que é estrangeiro do ponto de vista do pacote onde está acontecendo a importação. Vamos a um exemplo para ilustrar: digamos que você quer utilizar uma função do pacote "fmt" da biblioteca padrão de Go dentro da sua função main(). Para ter acesso a essa função, você precisa importar o pacote "fmt" usando a palavra reservada import, que deve vir logo abaixo da declaração do pacote. Na prática, fica assim:

package main

import "fmt"

func main() {
	fmt.Println("Let's Go!")
}

A função Println() do pacote "fmt" está disponível na linha 6 do código acima porque fizemos a importação do pacote na linha 3.

Palavras reservadas

Go tem 25 palavras reservadas, que são basicamente palavras-chave que designam ações pré-definidas pela linguagem. Elas podem ser encontradas na documentação da linguagem (nesse link aquiarrow-up-right) e na lista abaixo:

Nós já vimos três delas: func, import e package. Ao longo desse material conheceremos praticamente todas as demais.

Nomes pré-declarados

Além das palavras reservadas, também há nomes (ou identificadores) pré-declarados. São tipos e funções que estão disponíveis sem a necessidade de importação de nenhum pacote e que podem ser redeclarados - porém fazer isso traria confusão a quem está lendo o código. Estão disponíveis para consulta na documentação da linguagem (nesse link aquiarrow-up-right) e são os seguintes:

Ao longo desse material também encontraremos vários desses nomes, e alguns outros ficarão para serem explorados por você em outras oportunidades.

Funções da biblioteca padrão que serão úteis para o curso

Em grande parte dos exemplos, usaremos funções do pacote "fmt" da biblioteca padrão de Go, que disponibiliza várias funções que exibem saídas formatadas. Vamos introduzir algumas:

  • fmt.Println(): formata seus argumentos e escreve na saída padrão (em geral, a saída padrão é o monitor - ou seja, nesses casos, a função fará exibir na tela seu resultado), adicionando sempre uma nova linha ao final

  • fmt.Printf(): formata seus argumentos de acordo com especificadores de formato informados (os veremos adiante) e também escreve na saída padrão

  • fmt.Sprintf(): formata seus argumentos de acordo com especificadores de formato informados e retorna a cadeia de caracteres resultante

Antes de continuar, dê uma passada nesse site aquiarrow-up-right e clique no botão "Run". Você deve obter o seguinte resultado:

Nas 7 linhas desse pequeno programa, que "printou" (usaremos essa expressão para dizer que formatou e escreveu na saída padrão) Let's Go! e em seguida encerrou, podemos observar:

  • Uma declaração de pacote

  • Uma importação

  • Declaração de função main() no pacote main

  • Uso da função Println() do pacote "fmt"

Last updated