Declarar e usar variáveis

Concluído

Vamos iniciar este módulo examinando como declarar e usar variáveis no Go. Há várias maneiras de declarar uma variável. Veremos cada uma delas, e você escolherá aquela que melhor se adapta às suas necessidades ou ao seu estilo. Observaremos alguns aspectos específicos do Go que normalmente não são encontrados em outras linguagens de programação conforme exploramos os conceitos básicos das variáveis.

Estamos incluindo snippets de código nesta seção que podem ser executados no Visual Studio Code ou no Go Playground.

Declarar variáveis

Para declarar uma variável, você precisará usar a palavra-chave var:

var firstName string

A instrução anterior declara uma variável chamada firstName do tipo string. (Falaremos sobre os tipos de dados na próxima seção.) Este exemplo mostra a maneira mais básica de declarar uma variável. Caso deseje declarar outra variável, apenas adicione uma instrução semelhante à anterior. Você poderá declarar mais de uma variável em uma só linha se elas forem do mesmo tipo:

var firstName, lastName string

Ao adicionar uma vírgula (,) após um nome de variável, você está dizendo que está prestes a declarar outra variável. Nesse caso, a instrução anterior declara duas variáveis chamadas firstName e lastName do tipo string. Se você quiser adicionar uma terceira variável do tipo int, o código terá esta aparência:

var firstName, lastName string
var age int

Outra maneira de escrever a instrução anterior é usando parênteses após a palavra-chave var, como se você tivesse um bloco dedicado para declarar variáveis, desta forma:

var (
    firstName, lastName string
    age int
)

Inicializar variáveis

Você só declarou variáveis neste ponto, mas haverá ocasiões em que precisará delas para ter um valor inicial. No Go, você pode inicializar variáveis de várias maneiras. Por exemplo, continuando com o exemplo anterior, você poderá inicializar cada variável usando este código:

var (
    firstName string = "John"
    lastName  string = "Doe"
    age       int    = 32
)

Se você decidir inicializar uma variável, não precisará especificar o tipo dela, pois o Go inferirá o tipo quando você inicializar a variável com um valor. Por exemplo, você pode declarar e inicializar variáveis desta forma:

var (
    firstName = "John"
    lastName  = "Doe"
    age       = 32
)

O Go inferirá que as variáveis firstName e lastName são do tipo string e que a variável age é um tipo int.

Várias maneiras de inicializar variáveis

No Go, você pode declarar e inicializar variáveis em uma só linha. Separe cada nome de variável com uma vírgula e faça o mesmo para cada valor (na mesma ordem), desta forma:

var (
    firstName, lastName, age = "John", "Doe", 32
)

Há outra maneira de declarar e inicializar variáveis. Esse método é a maneira mais comum de fazer isso no Go. O mesmo exemplo que utilizamos poderá ter esta aparência:

package main

import "fmt"

func main() {
    firstName, lastName := "John", "Doe"
    age := 32
    fmt.Println(firstName, lastName, age)
}

Observação

Observe a instrução import "fmt". Usamos a palavra-chave import para colocar o conteúdo de um pacote no escopo. Estamos importando o pacote "fmt" para que possamos usar o método Println no código. Vamos examinar melhor essa palavra-chave em uma unidade posterior.

Execute o código anterior para confirmar se essa forma de declarar e inicializar variáveis funciona.

Observe que aqui você precisará incluir um sinal de dois-pontos e igual (:=) e o valor correspondente logo depois de definir o nome da variável. Quando você usa o sinal de dois-pontos e igual, a variável que você está declarando será uma nova. Se você usar um sinal de dois-pontos e igual e a variável já tiver sido declarada, o programa não será compilado. Adicione a idade como uma constante (confira a próxima seção), mas use o sinal de igual de dois-pontos (:=) e experimente.

Por fim, você só pode usar o sinal de dois-pontos e igual em uma função. Ao declarar variáveis fora de uma função, faça isso usando a palavra-chave var. Não se preocupe se você não estiver familiarizado com as funções. Apresentaremos as funções em uma unidade posterior.

Declarar constantes

Haverá ocasiões em que você precisará ter valores estáticos no código, conhecidos como constantes. O Go dá suporte ao uso de constantes. A palavra-chave para declarar uma é const.

Por exemplo, você pode declarar uma constante desta forma:

const HTTPStatusOK = 200

Assim como acontece com as variáveis, o tipo de uma constante é inferido com base no valor atribuído a ela. No Go, os nomes das constantes normalmente são escritos com uma mistura de letras maiúsculas e minúsculas ou só em letras maiúsculas.

Caso precise declarar várias constantes em um bloco, faça isso da seguinte maneira:

const (
    StatusOK              = 0
    StatusConnectionReset = 1
    StatusOtherError      = 2
)

Observação

O Go tem um conceito interessante relacionado às constantes que é chamado iota, que não é abordado neste módulo. No entanto, saiba mais sobre isso examinando o wiki do Go no GitHub. Tenha em mente que iota é uma palavra-chave usada no Go para simplificar as definições de constantes quando os valores são sequenciais.

Embora haja semelhanças entre constantes e variáveis, há algumas diferenças importantes. Por exemplo, você pode declarar constantes sem usá-las e não receberá uma mensagem de erro. Você não pode usar o sinal de dois-pontos e igual para declarar constantes. O Go não aceitará esse uso se você fizer isso.

Ele gera um erro se você declara variáveis e não as usa

Você precisa levar em conta algo fundamental no Go. Quando você declara uma variável e não a usa, ele gera um erro, não um aviso como em algumas outras linguagens de programação.

Por exemplo, vamos voltar a um dos nossos exemplos anteriores e remover a chamada fmt.Println:

func main() {
    firstName, lastName := "John", "Doe"
    age := 32
}

Ao executar esse código no Visual Studio Code ou no Go Playground, você verá que há um erro nas linhas em que está declarando as variáveis. Você verá estas mensagens de erro:

./main.go:4:2: firstName declared but not used
./main.go:4:13: lastName declared but not used
./main.go:5:2: age declared but not used

Tenha em mente que, para cada variável declarada no Go, você precisará usá-la em algum lugar.