Declarar e utilizar variáveis

Concluído

Vamos começar este módulo observando como declarar e usar variáveis em Go. Há várias maneiras de declarar uma variável. Analisaremos cada um deles e você escolherá o que melhor se adapta às suas necessidades ou estilo. Observaremos algumas coisas específicas do Go que você normalmente não encontra em outras linguagens de programação enquanto exploramos os principais conceitos para variáveis.

Estamos incluindo trechos de código nesta seção que você pode executar no Visual Studio Code ou no Go Playground.

Declarar variáveis

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

var firstName string

A instrução anterior declara uma variável chamada firstName do tipo string. (Falaremos sobre tipos de dados na próxima seção.) Este exemplo mostra a maneira mais básica de declarar uma variável. Se você quiser declarar outra variável, basta adicionar uma instrução semelhante à anterior. Você pode declarar mais de uma variável em uma única linha se elas forem do mesmo tipo:

var firstName, lastName string

Ao adicionar uma vírgula (,) após o nome de uma variável, você está dizendo que está prestes a declarar outra variável. Neste caso, a instrução anterior declara duas variáveis nomeadas 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 var palavra-chave, como se você tivesse um bloco dedicado para declarar variáveis, assim:

var (
    firstName, lastName string
    age int
)

Inicializar variáveis

Você só declarou variáveis neste momento, mas haverá momentos em que precisará que elas tenham um valor inicial. Em Go, você pode inicializar variáveis de várias maneiras. Por exemplo, continuando com o mesmo exemplo anterior, você pode 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 seu tipo porque Go inferirá o tipo quando você inicializar a variável com um valor. Por exemplo, você pode declarar e inicializar variáveis como esta:

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

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

Várias maneiras de inicializar variáveis

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

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

Há outra maneira de declarar e inicializar variáveis. Este método é a maneira mais comum de fazê-lo em Go. O mesmo exemplo que temos usado pode ser assim:

package main

import "fmt"

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

Nota

Observe a import "fmt" declaração. Usamos a import palavra-chave para trazer o conteúdo de um pacote para o escopo. Estamos importando o pacote "fmt" para que possamos usar o Println método em nosso código. Veremos mais de perto essa palavra-chave em uma unidade posterior.

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

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

Finalmente, você pode usar o sinal de igual a dois pontos apenas dentro de uma função. Quando você declara variáveis fora de uma função, você deve fazê-lo usando a var palavra-chave. Não se preocupe se não estiver familiarizado com as funções. Introduziremos funções em uma unidade posterior.

Declarar constantes

Haverá momentos em que você precisará ter valores estáticos em seu código, conhecidos como constantes. Go suporta o uso de constantes. A palavra-chave para declarar um é const.

Por exemplo, você pode declarar uma constante como esta:

const HTTPStatusOK = 200

Tal como acontece com as variáveis, o tipo de uma constante é inferido a partir do valor atribuído a ela. Em Go, os nomes constantes são normalmente escritos em MixedCased ou em letras maiúsculas.

Se você precisar declarar várias constantes em um bloco, poderá fazê-lo da seguinte forma:

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

Nota

Go tem um conceito interessante relacionado a constantes que é chamado iota, que não estamos abordando neste módulo. Mas você pode aprender mais sobre isso olhando para o wiki Go no GitHub. Apenas tenha em mente que iota é uma palavra-chave que Go usa para simplificar definições constantes quando os valores são sequenciais.

Embora existam semelhanças entre constantes e variáveis, existem algumas diferenças fundamentais. Por exemplo, você pode declarar constantes sem usá-las e não receberá uma mensagem de erro. Não é possível usar o sinal de igual a dois pontos para declarar constantes. Vá reclamar se você fizer.

Go lança um erro se você declarar variáveis e não usá-las

Há algo fundamental que você precisa ter em mente em Go. Quando você declara uma variável e não a usa, Go lança 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 fmt.Println chamada:

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 você 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 em Go, você deve usá-la em algum lugar.