1. Início
  2. Desenvolvimiento de software
  3. GoLang: uma introdução

GoLang: uma introdução

Go ou GoLang

Golang é uma linguagem criada por um grupo de engenheiros do Google por estarem insatisfeitos com as características do C e de outras linguagens disponíveis que não ofereciam recursos necessários a alguns projetos da empresa.

Usar “Golang” facilita a pesquisa relacionada a essa linguagem.

Boa parte dos artigos no medium e respostas no Stackoverflow usa essa nomenclatura informal para evitar ambiguidade na indexação em sites de busca.

Já que Go é uma palavra em inglês de uso comum ao contrário de Python e Javascript

Além de Golang, a linguagem do Google, também existe o Flutter, o framework do Google.

Principalmente, para ter uma opção de linguagem de alto desempenho além do C que representa limitações que não são compatíveis com necessidades mais modernas como:

Concorrência e evitar uso de gerenciamento de memória em código, por exemplo.

E, para resolver a situação de forma elegante e com bom desempenho, desenvolveram uma linguagem compilada com características de uma linguagem interpretada e suporte simplificado a concorrência.

Por que aprender GoLang?

O Go é uma linguagem que foi escrita com alto desempenho em mente. O uso dela no YouTube e em outras plataformas criou uma redução drástica no consumo de recursos nos servidores nos quais foi usada. 

Tanto que hoje diversas empresas além do Google fazem o uso de Go, podendo ser citadas: Microsoft e Docker Inc.

O software de containers Docker foi escrito em Go. A Azure, serviço de cloud da Microsoft, também usa Go para o serviço de container AKS.

Go tem uma perspectiva de crescimento enorme para os próximos anos!

Sendo que bons desenvolvedores que possuem habilidades na linguagem estão entre os mais requisitados, o que pode possibilitar a eles criarem código para qualquer plataforma!

Para que, dessa forma, você seja uma pessoa desenvolvedora versátil e capacitada para atuar como fullstack, por exemplo.

Na GeekHunter, você cria um perfil, conhece as oportunidades e recebe propostas alinhadas ao seu perfil. São mais de 1000 vagas para desenvolvedores como você!

Por onde começar? Instalando as dependências, é claro!

A instalação do compilador de Go, a princípio, pode parecer assustadora, mas uma vez feita, você terá um canivete suíço pronto em mãos.

Você terá ferramentas para lidar com o protocolo HTTP e outras tantas coisas já prontas nas bibliotecas padrão da linguagem.

1. O download dos arquivos básicos para Linux:

$ wget -c https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz

Isso vai salvar a versão 1.12.4 do Go no seu diretório atual (recomendo a raiz do usuário).

2. Basta extrair o arquivo usando o comando:

$ sudo tar -C /usr/local -xzf go1.12.4.linux-amd64.tar.gz

3. Criando o diretório para o GOPATH:

$ mkdir $HOME/go

4. Quase pronto, faltam apenas as variáveis de ambiente.

Para isso, adicione as seguintes linhas ao final do seu arquivo bashrc (ao menos no meu caso que uso Ubuntu com o shell padrão):

`
#CONFIGURAÇÃO DO GO
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
`

5. Testando a instalação:

$ go version

Caso tudo tenha acontecido da maneira esperada o output será parecido com isso:

go version go1.12.4 linux/amd64

Olá, Gophers!

golang
Golang, além de possuir um alto desempenho, ainda é open source!

Como não pode faltar, aqui vai um exemplo do tradicional Hello World escrito em GoLang:

`package main

import “fmt”

func main(){

fmt.Println(“Olá Gophers!”)

}`

Agora é só salvar como hello_gophers.go entrar no diretório em que o código fonte foi salvo e rodar com:

go run hello_gophers.go

Para ver o código rodar, caso tenha interesse em compilar o arquivo para uma versão em binário, basta rodar o comando go build:

hello_gophers.go ./hello_gophers

A explicação resumida do código acima:

Na linha 1, o Go está sendo informado em qual parte iniciar a execução do código fonte na linha 2 está sendo chamada a biblioteca fmt que significa formatted I/O.

A própria documentação caracteriza como sendo um análogo as funções printf e scanf do C.

Na linha 3 e 4 está sendo iniciada a função principal do código (main) que não precisa de argumentos para iniciar e sendo chamada a função de output do terminal com a string “Olá Gophers!” como único argumento necessário.

Busca binária com testes unitários para Golang

O algoritmo de busca binária parte da premissa de que o array está ordenado, nesse caso ordem crescente.

`package main

import “fmt”

func main(){
array := []int{0,1,2,3,4,5,6,7,8,9}
valor := 5
index := binaria(array, valor)
If index == -1{
fmt.Errorf(“Valor %v não encontrado”, valor)
}
fmt.Println(“Valor %v encontrado no index %v”, array[index], index )
}
func binaria(array, valor){
l := 0
h := len(array) - 1
for l < h { medio := (h + l) / 2 If array[medio] == valor{ return medio } If array[medio] > n {
h = m - 1
}
If array[medio] < n {
l = m + 1
}
}
return -1
}`

O exemplo acima é muito simples para não ficar apenas no exemplo do Hello World.

Listei pontos interessantes da sintaxe do Go:

  • Ao declarar variáveis com um valor inicial usamos “:=” assim o compilador é informado que precisa alocar espaço em um endereço de memória para essa variável com o valor do lado direito.
  • O fmt.Errorf vai enviar para o terminal um erro informando que o valor requisitado não foi encontrado e o %v serve para inserir o valor da variável no final chamada da função dentro da string.

De outra forma, o código continuaria sendo executado e Go não tem suporte a index negativo, diferente do python e outras linguagens nas quais isso retorna o último valor do array, em Go isso retorna um erro “index out of range”.

Logo, essa é a forma mais interessante de evitar problemas posteriormente

  • Se o loop for na função binária, será interrompido assim que alcançar o return ou l se tornar maior ou igual a h, logo não é necessário se preocupar com loop infinito nesse caso.

Além disso, os demais operadores usados são bastante comuns em outras linguagens como por exemplo:

Operadores de comparação“==”, “<”, “>”

Operadores aritméticos “+”, “-”, “/

O céu não é um limite para Golang!

golang
Foque em estudar e aprimorar ainda mais as suas skills como dev!

E agora? Continuar aprendendo mais fazendo projetos cada vez maiores!

Aqui vão alguns lugares para conseguir materiais de estudo e suporte da comunidade:

GoByExamples
Esse site tem uma lista de pequenos códigos implementados em Go com explicação linha a linha do que está sendo feito neles.

GoBlog

As notícias mais atuais sobre GoLang!

GoWebExamples

Nesse site tem várias implementações de programas em Go voltados para Web, desde servidores até clientes web feitos em Go.

Não tem forma melhor de aprender do que vendo como os outros fazem para depois testar o código linha por linha e ver o que acontece.

Pode parecer o caminho da pedras, mas considero muito divertido!

Em outro artigo pretendo explicar a GoRoutines e outras características da linguagem!

Até a próxima!


Quer contratar os melhores talentos tech em menos tempo?

Queremos te ajudar a contratar muito mais rápido e melhor. Podemos começar?

Leituras Recomendadas

Quer receber conteúdos incríveis como esses?

Assine nossa newsletter para ficar por dentro de todas as novidades do universo de TI e carreiras tech.