Artigos de Tecnologia e Negócios > Programação

Como funcionam as variáveis em Go

guilherme-lima
guilherme-lima

Para todo programa que faremos na vida de programador, precisaremos declarar variáveis e isso é tão comum que fazemos sem pensar. Em Java por exemplo, fazemos a declaração da seguinte maneira:

// declaração da  variável idade
int idade;
idade = 15;

// imprime a idade
System.out.println(idade);

Mas, e na linguagem GO, com é feita essa declaração?

Declarando variáveis em GO

Utilizamos a palavra var, o nome da variável que queremos referenciar e seu tipo.

package main

import (
    "fmt"
)

var idade int = 15

func main() {
    fmt.Println(idade)
}

Um ponto interessante é que podemos estar no nível do pacote ou da função.

Mas que isso quer significa?

Escopo de variáveis

Uma variável declarada dentro de uma estrutura de repetição como o if, for, switch ou qualquer outro bloco, não poderá ser acessada fora desse escopo, ou seja, só poderá ser acessadas apenas por escopos mais internos.

Já uma variável ou função criada fora de um bloco é atribuída ao escopo do Package ou Pacote, que nada mais é que uma unidade composta por diversos arquivos que juntos servem a um objetivo comum, e pode ser acessada de qualquer arquivo dentro do mesmo pacote.

Como no exemplo a seguir:

package main

import (
    "fmt"
)

func main() {
    var idade int = 15
    fmt.Println(idade)
}

Ao executar esses códigos, temos o resultado esperado, porém, recebemos uma notificação:

should omit type int from declaration of var idade; it will be inferred from the right-hand side

Isso significa que devemos omitir o tipo da variável int(inteiro), pois isso já será inferido. Ou seja, temos o mesmo resultado com este código:

package main

import (
    "fmt"
)

func main() {
    var idade = 15
    fmt.Println(idade)
}

Se o tipo da variável é inferido pelo compilador eu posso usar a mesma variável para tipos de dados diferentes? Por exemplo nome :="guilherme" e depois nome =10 ?

Mesmo o Go sendo uma linguagem compilada rápida, de tipagem estática, ou seja, o compilador verifica os tipos usados em dados e variáveis para garantir que sempre está sendo usado um tipo que é esperado em todas as situações, não é aconselhável que isso aconteça.

Mesmo em linguagens que possuem tipagem dinâmica ao invés de estática, ou seja, a verificação de tipo é feita em cima do dado em si, já que as variáveis podem conter qualquer tipo de dado, como o javascript por exemplo, é bom evitar essa prática, pois isso pode causar confusão por parte daqueles que trabalham no mesmo projeto.

Mais exemplos de declaração de variáveis

Podemos criar mais de uma variável ao mesmo tempo, podendo especificar o tipo ou omitindo:

package main

import (
    "fmt"
)

func main() {
    var idade, dia int = 15, 29
    fmt.Println(idade, dia)
}

Podemos criar mais de uma variável também com tipos diferentes:

package main

import (
    "fmt"
)

func main() {
    var (
        idade  int
        altura float32
        nome   string
    )

    idade = 15
    altura = 1.78
    nome = "Guilherme"

    fmt.Println(nome, idade, altura)
}

Ou, deixar o Go inferir os tipos, para ter o mesmo resultado:

package main

import (
    "fmt"
)

func main() {
    var (
        idade  = 15
        altura = 1.78
        nome   = "Guilherme"
    )
    fmt.Println(nome, idade, altura)
}

Posso também utilizar o Short variable declarations, ou seja, declarações curtas de variáveis utilizando o sinal : seguido do =.

package main

import (
    "fmt"
)

func main() {

    idade := 15
    altura := 1.78
    nome := "Guilherme"
    fmt.Println(nome, idade, altura)
}

Está última abordagem com := (dois pontos, igual), usamos apenas quando vamos criar e atribuir um valor dentro do escopo de uma função.

Quando a variável receber um novo valor, devemos utilizar apenas o sinal de = (igual). Caso contrário, receberemos a seguinte mensagem dizendo que não há novas variáveis seguido do :=

no new variables on left side of :=go

Não atribuir um valor ao criar uma variável

Quando criamos uma variável e não atribuímos um valor a ela, o Go se encarrega de atribuir um valor. Sendo assim, é uma boa prática sempre inicializamos as variáveis durante a declaração.

No C e C++ por exemplo se não inicializamos a variável, o compilador simplesmente pega o que tive naquele espaço de memória que ele alocou e usa como se fosse sua variável.

Em linguagens mais modernas como o Go a própria linguagem se encarrega de inicializar as variáveis:

----------------------------------------------
| Tipo         | valor atribuído pelo Go     |
|----------    |-------------------------    |
| numérico     | 0                           |
| booleano     | false                       |
| string       | " "                         |
----------------------------------------------

É sempre bom fazermos nós mesmos a inicialização das variáveis para não correr nenhum risco dos padrões da linguagem mudarem e nosso programa parar de funcionar.

Como vimos, podemos criar variáveis de diferentes formas utilizando a linguagem GO. Caso queira ver todos os tipos com detalhes, acesse este link. Quer aprender mais sobre Go lang?

Na plataforma da Alura temos um curso de Go lang ensinando mais sobre variáveis, fluxo de controle, convenções e muito mais. Também temos um livro da Casa do código , onde apresentamos os recursos da linguagem Go e importantes partes de sua biblioteca padrão, sempre incluindo exemplos relevantes que demonstram o uso de cada recurso.

Leia também:

Artigos de Tecnologia e Negócios > Programação

Cursos profissionais de Programação é na Alura, comece agora!

  • 971 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 971 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 971 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 971 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana