Guia da linguagem Go \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 00 Horas 

 08 Min 

 38 Seg 

   Tempo restante da oferta: 00 08 38 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Guia da linguagem Go  [ Guias ](https://www.treinaweb.com.br/blog/categoria/guias) [ Go ](https://www.treinaweb.com.br/blog/categoria/go) 

# Guia da linguagem Go

 Nesse guia de Go você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação Go. Acesse agora mesmo!

 [ Cleyson Lima ](https://www.treinaweb.com.br/blog/autor/cleyson-lima) 3 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/10/o-que-e-e-como-comecar-com-golang.jpg)  

[Go ou Golang](https://go.dev/) como é comumente conhecida pela comunidade, é uma linguagem de programação desenvolvida pela Google em setembro de 2007, mas que só veio a público em novembro de 2009.

Grandes nomes da área da computação fizeram parte do desenvolvimento dessa linguagem, sendo eles, Robert Griesemer, Ken Thompson e Rob Pike. A linguagem Go foi desenvolvida visando solucionar os desafios de engenharia enfrentados pelos desenvolvedores e desenvolvedoras do Google ao utilizar a linguagem C.

Go tem como suas principais características:

- É uma linguagem compilada;
- [Estaticamente e fortemente tipada](https://www.treinaweb.com.br/blog/quais-as-diferencas-entre-tipagens-estatica-ou-dinamica-e-forte-ou-fraca), além de possuir o recurso de inferência de tipos ou duck typing;
- Possui um garbage collector integrado, prevenindo problemas de vazamento de memória e um gerenciamento de memória apropriado;
- É uma linguagem opinativa, ela segue um sistema de tipos delimitado e lança erros quando variáveis ou bibliotecas não utilizadas são declaradas no programa;
- É simples de compilar e empacotar, gerando binários que podem ser executados diretamente pelo sistema operacional sem a necessidade de instalar nenhum interpretador previamente;
- Extensa biblioteca padrão com ferramentas para comunicação HTTP, serialização e desserialização de dados, expressões regulares e muito mais.

Para mais detalhes sobre a linguagem Go, recomendo a leitura do artigo “[O que é e como começar com Go (Golang)?](https://www.treinaweb.com.br/blog/o-que-e-e-como-comecar-com-golang)”

[  ![Lógica de Programação - Iniciando na programação](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/logica-de-programacao.svg)   Curso Lógica de Programação - Iniciando na programação Conhecer o curso ](https://www.treinaweb.com.br/curso/logica-de-programacao-iniciando-na-programacao)

## Como instalar a linguagem e nosso primeiro exemplo

Como a Golang é multiplataforma, você pode instalar em qualquer sistema: Windows, Linux e MacOS. Já temos um artigo que aborda todo o [passo a passo de instalação](https://www.treinaweb.com.br/blog/como-instalar-a-golang-e-executar-nosso-primeiro-exemplo), em todos esses sistemas, para que você já deixe sua máquina pronta para começar.

Como qualquer outra linguagem, a Golang tem as suas próprias regras de sintaxe e estrutura. Vamos imprimir o tradicional “Hello World” e você verá como é fácil!

```go
package main

import "fmt"

func main() {
	fmt.Println("Olá Mundo")
}

```

[No mesmo artigo](https://www.treinaweb.com.br/blog/como-instalar-a-golang-e-executar-nosso-primeiro-exemplo) onde ensinamos você a instalar a linguagem Go em sua máquina, também abordamos com mais profundidade sua sintaxe e estrutura.

## Conhecendo variáveis e constantes

O Go é uma linguagem de [tipagem estática](https://www.treinaweb.com.br/blog/quais-as-diferencas-entre-tipagens-estatica-ou-dinamica-e-forte-ou-fraca/), ou seja, existe um sistema de tipos bem definido validado durante o tempo de compilação do código. Além disso, o Go também é uma linguagem fortemente tipada, isso significa que o Go não irá realizar conversão automática de tipos, caso alguma conversão seja necessária ela deve ser feita de forma explícita pela pessoa que está desenvolvendo o software.

Por padrão, o Go possui em sua biblioteca padrão diversos tipos de dados, abaixo estão listados os mais comuns de serem utilizados:

- `int`: é um tipo inteiro que pode conter 32 ou 64 bits, a definição de qual o tamanho em memória será utilizado vai depender da arquitetura da máquina em que o código está sendo executado;
- `uint`: tem o mesmo comportamento do tipo `int`, mas só recebe valores sem sinal;
- `float32`: trata-se de um tipo de dado de ponto flutuante de 32 bits. Isso quer dizer que ele permite armazenar valores decimais entre 6 e 7 casas. Porém, o armazenamento em memória pode não representar necessariamente o valor repassado. Por exemplo, um float32 definido com “0,001” pode acabar sendo armazenado como “0,00100001”, e isso não somente no Go, já que isso é decorrência dos pontos flutuantes, em geral. Por isso, o tipo float32 não deve ser usado para operações que precisam passar por várias operações aritméticas, como sistemas financeiros. Isso porque, a primeira vista, essa imprecisão pode não impactar, mas na sequência de operações realizadas, estas imprecisões podem começar a aparecer nos resultados;
- `float64`: representa um ponto flutuante de 64 bits. Por isso, ele permite armazenar números de até cerca de 15 casas decimais. A observação para o tipo float32 também é válida para o tipo float64, por ser um tipo de dado que é armazenado por aproximação de valores, ele não deve ser utilizado em operações que demandam precisão absoluta;
- `bool`: é um dos tipos de dados mais simples, pois ele pode armazenar apenas dois valores: true (verdadeiro) ou false (falso). É empregado para realizar testes lógicos, dentro de estruturas de decisão e repetição, por exemplo;
- `string`: trata-se de um conjunto de caracteres de tamanho indefinido.

Após vermos os tipos de dados, podemos criar nossas variáveis. Elas têm algumas regras, como, por exemplo, devem ser claras e autoexplicativas.

```go
package main

func main() {
	var idade int = 18
	var nome string = "Cleyson"
}

```

Também é possível declarar constantes na linguagem Go, diferente de uma variável as constantes não podem ter o seu valor alterado ao longo da execução do programa.

A declaração de uma constante é bem semelhante à forma de declaração de uma variável, a diferença é que utilizamos a palavra reservada `const` e as constantes devem ser imediatamente inicializadas.

```go
package main

func main() {
	const segundosEmUmMinuto int = 60
}

```

No artigo sobre [variáveis e constantes no Go](https://www.treinaweb.com.br/blog/conhecendo-variaveis-e-constantes-na-golang), podemos nos aprofundar no uso de constantes e ver mais exemplos e explicações sobre o uso de variáveis.

[  ![Lógica de Programação - Avançando na programação](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/logica-de-programacao.svg)   Curso Lógica de Programação - Avançando na programação Conhecer o curso ](https://www.treinaweb.com.br/curso/logica-de-programacao-avancando-na-programacao)

## Estruturas condicionais e estruturas de repetição

As estruturas condicionais e de repetição são fundamentais e vem para nos ajudar no reaproveitamento de código.

As estruturas condicionais possibilitam ao programa tomar decisões e alterar o seu fluxo de execução. Isso possibilita ao desenvolvedor o poder de controlar quais são as tarefas e trechos de código executados de acordo com diferentes situações, como os valores de variáveis. Algumas estruturas condicionais no Go são o `if/else` e o `switch/case`.

Abaixo temos um exemplo simples da utilização do `if/else`. Nele verificamos se a pessoa é maior ou menor de idade, dependendo do valor que contiver na variável idade.

```go
package main

import "fmt"

func main() {
	idade := 18
	if idade >= 18 {
		// Se a váriavel idade for maior ou igual à 18 esse trecho de código será executado
		fmt.Println("Você é maior de idade!")
	} else {
		// Se a váriavel idade não for maior ou igual à 18 esse trecho de código será executado
		fmt.Println("Você é menor de idade!")
	}
}

```

As estruturas de repetição, também conhecidas como loops (laços), são utilizadas para executar repetidamente uma instrução ou bloco de instrução enquanto determinada condição estiver sendo satisfeita. O Go possui apenas uma estrutura de repetição, a estrutura `for`, porém, ela pode ser usada de diversas formas.

Vejamos um exemplo abaixo utilizando o `for`. Aqui teremos uma variável começando em zero, onde, a cada rodada, ela irá somar +1. Isso irá se repetir até que a variável chegue até 10, encerrando assim esse bloco.

```go
package main

import "fmt"

func main() {
	for i := 1; i
