O artigo anterior escrevemos o nosso primeiro código em Go. Hoje falaremos um pouco sobre a diferença que existe entre constantes e variáveis.
1. O que é constante e variável?
Constantes e variáveis podem ser visualizadas como containers que são utilizados para guardar informação.
Uma vez que o valor de uma constante é atribuído, ele não pode ser alterado. Um outro ponto muito importante é que a constante ela é analisada no momento em que o código é compilado. Existem tipos específicos que podem ser utilizados como constante: boolean
, rune
, integer
, floating-point
, complex
e string
.
Rune
,Integer
,Floating-point
eComplex
são chamados coletivamente de constantes numéricas.
As variáveis por outro lado, são analisadas em runtime
, ou seja, em tempo de execução, variáveis, assim como o nome também indica, são passíveis de sofrerem alterações, o valor atribuído pode ser alterado, mas não o seu tipo.
2. Show me the code
2.1 A palavra-chave “const”
Existem constantes tipadas e não tipadas. Uma constante não tipada receberá o valor padrão de uma conversão implícita. Os valores padrão para constantes são bool
, rune
, int
, float64
, complex128
ou string
.
const minhaIdade int32 = 27
Parar inicializar uma constante, seguimos o seguinte padrão.
const
- Palavra-chave para declarar uma constante.minhaIdade
- Nome que será atribuído a constante.int32
- Tipo que estamos atribuindo (Não é obrigatório, pode ser não tipada)27
- Valor que será atribuído.
const minhaIdade = 27
O exemplo acima usamos uma constante não tipada, como podemos conferir se o tipo atribuído nesse caso realmente foi um int
?
Para validar essa informação, vamos utilizar um pacote do bult-in
chamado reflect
, ele consegue analisar o nosso código em runtime
.
package main
import (
"fmt"
"reflect"
)
const minhaIdade = 27
func main() {
fmt.Println(reflect.TypeOf(minhaIdade))
}
2.2 A palavra-chave “var”
Go é uma linguagem estiticamente tipada, isso quer dizer que o tipo da variável é inferido antes da compilação da aplicação.
A palavra-chave “var” é utilizada para a definição de uma variável, o código abaixo mostra como podemos declaras as variáveis em Go.
package main
import "fmt"
func main() {
var name = "Alexandre" // sem declaração de tipo
var surname string = "Awadallak" // utilizando declaração de tipo
var age int // sem inicialização de valor
fmt.Println(age) // O retorno da execução irá exibir 0
}
2.2.1 Inicialização curta de variáveis
É muito comum você olhar códigos escritos em Go que utilizam a sintaxe curta para a inicialização de variáveis. Com esse tipo de abordagem não é necessário o uso da palavra-chave var.
Porém é essencial compreender que variáveis a nível de pacote não podem ser inicializadas dessa maneira, apenas quando dentro do escopo de um função ou método. O exemplo abaixo mostra como podemos inicializar utilizando a sintaxe curta.
package main
import "fmt"
func main() {
name := "Alexandre Awadallak"
}
No exemplo acima passamos a utilizar o operador :=
, com ele não precisamos inicializar uma variável utilizando a palavra-chave, assim como não é necessário informar o tipo da mesma.