Golang básico - Declarando variáveis
Tags: go, tutorial, iniciante, portugues
Published: 2022-05-18 03:14:41

---
title: Golang básico - Declarando variáveis
published: true
description: 
tags: #go #tutorial #iniciante #portugues
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wsrivp5deyklmxxxa6ok.jpeg
series: Golang básico
---

> Esse post faz parte de uma série onde pretendo compartilhar o básico essencial para desenvolver com GoLang.

A maneira mais simples de entender variáveis é lembrar que um programa funciona com entrada -> processamento -> saída. Declarar variáveis é a forma que temos de reservar espaços em memória para armazenar as entradas de dados e permitir que processamento use essas variáveis e produza algum resultado como saída.

## Declarando variáveis

Em Go existem algumas maneiras de fazer isso, todas elas tem um contexto e saber onde usar vai simplificar bastante seu código.

### Utilizando var com tipo explicito

Esse é tipo de declaração que usamos no inicio de uma função, quando você declara esse tipo de variável você está deixando explicito o tipo da varíavel que nos blocos seguintes vai ter o seu valor modificado (ou não). Por exemplo:
```go
package main

import (
	"fmt"
	"runtime"
)

func main() {
	var valor int
	if runtime.NumCPU() > 0 {
		valor = runtime.NumCPU()
	}
	fmt.Println(valor)
}

```
Nesse código estou declarando a variável `valor` de tipo int(ou seja, um número inteiro). E logo em seguida eu faço um processamento para atribuir um novo valor a essa variável.

*Dica: você pode testar esse código no https://go.dev/play/*

### Criando e atribuindo de forma implícita

Criar variáveis implícitas é provavelmente o jeito mais fácil e prático, mas sempre se atente ao contexto. É muito comum elas serem usados dentro dos blocos, e elas normalmente são resultado da chamada a uma função ou do resultado de uma expressão, vamos ver nosso exemplo novamente:

```go
package main

import (
	"fmt"
	"runtime"
)

func main() {
	var valor int
	if runtime.NumCPU() > 0 {
		valor = runtime.NumCPU()
	}
	maiorQueDois := runtime.NumCPU() > 2
	fmt.Println(valor, maiorQueDois)
}

```
Agora nós estamos criando a variável `maiorQueDois`, ela é resultado da expressão `runtime.NumCPU() > 2` e implicitamente o Go decide que o tipo dessa variável é `bool`.

### Grupos de variáveis

O última forma que vamos abordar é o grupo de variáveis:

```go
package main

import (
	"fmt"
	"runtime"
)

func main() {
	var (
		valor     = 4
		categoria = "brabo"
	)

	if runtime.NumCPU() > 0 {
		valor = runtime.NumCPU()
	}
	maiorQueDois := valor > 2
	if valor <= 4 {
		categoria = "mais ou menos"
	}
	fmt.Println(valor, maiorQueDois, categoria)
}
```
Grupos são uma combinação das duas formas, precisamos do `var`, seguido de parêntesis e as variáveis separadas por linhas. No nosso caso `valor` e `categoria`.
Perceba, quando você cria um grupo você está expressando que essas variáveis tem alguma conexão, no meu exemplo a `categoria` é dependente do `valor`.

### Resumo
* Declaração explicita é feita com `var` nomeVariavel `tipo`
* Declaração implícita utiliza `nomeVariavel` := `expressão`
* Grupo de variáveis utilizam: 
```
var (
   nomeVariavel = `valor` ou `expressão`
)
```
* Go é uma linguagem muito simples e de poucos comandos, sempre que for usar um tipo de declaração tente expressar sua intenção. Simplicidade e expressividade!