DEV Community

Cover image for Série Go: Uma abordagem sobre a Linguagem de Programação Golang
Marcos Oliveira
Marcos Oliveira

Posted on

2 1 1 1

Série Go: Uma abordagem sobre a Linguagem de Programação Golang

O core Go, WebDev, GameDev, CliDev, GUIDev e exemplos diferentes.


Hoje vamos iniciar séries sobre várias linguagens de programação diferentes. Trata-se de documentos que eu fui escrevendo durante muito tempo e ficou aqui parado e não sabia o que fazer com eles.

Algumas pessoas sugeriram fazer um Curso, mas isso iria me tomar ainda mais tempo, pode ser até que eu transforme, no futuro, se der, em vídeo. Mas, pra não continuar com todo esse conteúdo aqui parado, vou começar a "soltar" como postagens.

O diferencial dessas séries é que os exemplos são diferenciados dos que você pode encontrar por aí. São coisas que eu mesmo criei e as pessoas gostam das coisas que eu faço, acho que deve ser a experiência que eu carrego desde 2011 quando inicie o Terminal Root, aliás, ele começou assim, coisas que eu fazia pra mim e resolvi guardar no Blogger e sem querer, os links já estavam em vaŕios fóruns, que foi aí que eu descobri porque o meu blog tava tendo muito acesso.

Nessa primeira série iremos abordar a linguagem de programação Go/Golang.

A linguagem de programação Go é responsável por muitas coisas que muitos de nós usamos no dia a dia. Diversos softwares famosos são feitos com Go, dentre alguns deles, temos:

  • Docker - Virtualização em nível de sistema operacional.
  • Kubernetes - Orquestrador de containers amplamente usado.
  • Terraform - Ferramenta de infraestrutura como código (IaC) da HashiCorp.
  • Prometheus - Sistema de monitoramento e alerta.
  • Grafana Loki – Sistema de logs escalável.
  • Hugo – Gerador de sites estáticos rápido.
  • Gogs/Gitea – Plataformas self - hosted de gerenciamento de repositórios Git.

O mais recente é o TypeScript Go, trata-se de um runtime TypeScript feito pela Microsoft, que será o padrão para rodar em aplicações como: VS Code e outras.

Esse port do TypeScript para Go deu muito que falar nos últimos dias, pois a execução do TypeScript ficou 10x mais rápida!

Além de diversos outros menos conhecidos.

Um dos diferenciais da linguagem de programação Go é que diferentemente de linguagens como: Swift, Rust, Zig, e entre outras, Go NÃO DEPENDE DO LLVM/C++ para compilar e criar seus arquivos binários, toda a estrutura da linguagem é original e própria.

Além também de não ter recorrido a invenção do C++ de deletar ponteiros e sim utilizar Garbage Collector, que há um pequeno impacto no desempenho, mas não corre o risco severo de vazamento de memória. Para quem ainda não entende bem como isso funciona, saiba que o Rust que é visto como memory safety possui uma página em sua documentação alertando que é possível sim haver memory leaks.

A única diferença é que o compilador original, assim como Swift, Carbon, Rust, Zig e outras, foi escrito em C++ que foi o gofrontend, mas também já "sofreu": bootstraping.

Nesses episódios da série vamos tentar abordar de 3 a 4 tópicos. Nesse Episódio 01 de hoje vamos ver:


01. Introdução

Go é uma linguagem de programação criada pela Google e lançada em código livre em novembro de 2009.

É uma linguagem compilada e focada em produtividade e programação concorrente, baseada em trabalhos feitos no sistema operacional chamado Inferno.

O projeto inicial da linguagem foi feito em setembro de 2007 por Robert Griesemer, Rob Pike e Ken Thompson(um dos criadores do UNIX).

Atualmente, há implementações para Windows, macOS, GNU/Linux e FreeBSD.

Para mais informações veja aqui, a página oficial do Go é: https://go.dev/


02. Preparando o Ambiente

Antes de mais nada você precisa ter o Go instalado no seu sistema. Você pode fazer o download aqui: https://go.dev/dl/ ou utilizar o gerenciador de pacotes do seu sistema operacional, exemplos:

É interessante abrir o PowerShell como Administrador.

winget install --id=GoLang.Go  -e
Enter fullscreen mode Exit fullscreen mode

Go WinGet

brew install go
Enter fullscreen mode Exit fullscreen mode
sudo apt install golang-go
Enter fullscreen mode Exit fullscreen mode

Após instalado teste rodando o comando go version se aparecer a versão similar ao conteúdo abaixo é porque está tudo certo.

go version
go version go1.22.2 amd64
Enter fullscreen mode Exit fullscreen mode

Alternativamente você também pode usar o compilador do GCC que é o GCCGO, para isso veja os links abaixo:

É interessante também você instalar snippets para Go no seu IDE/Editor preferido.


03. Olá, Mundo!

O programa mais básico de todos é sempre um Hello, World!, então vamos criar nosso exemplo com Go. Crie uma arquivo de nome qualquer e extensão .go, exemplo: hello.go e insira o conteúdo abaixo:

package main

import "fmt"

func main (){
  fmt.Println("Olá, Go!")
}
Enter fullscreen mode Exit fullscreen mode

Para rodar você pode rodar o comando abaixo, apesar de não ser a melhor forma, pois fica lento, mas é possível:

go run hello.go
Enter fullscreen mode Exit fullscreen mode

O correto mesmo é construir o binário(fica mais veloz) e executar posteriormente:

go build hello.go
./hello
Enter fullscreen mode Exit fullscreen mode

Explicando o código:

  • package main → Cada programa Go é composto de pacotes. Programas começam rodando pelo pacote main.
  • import "fmt" → Este programa está usando o pacote com caminho de importação "fmt", alternativamente poderia usar a sintaxe: import ("fmt") usada para mais de uma importação.
  • func main() → Essa é a função principal, ele sempre precisa existir em todos os programas Go, precisamos abrí-la com { e fechar com }.
  • fmt.Println("Olá, Golang!") → Para imprimimos o conteúdo desejado usa-se fmt.Println(), a função Println() faz parte da biblioteca fmt, o P em maiúsculo deve ser respeitado.

04. Comentários

Go usa estilo C/C++ para escrever comentários(parte do código que não influenciará no resultado, somente para fins informativos de quem venha ler o código) // comentário ou /* comentário */(múltiplas linhas) , exemplos:

// Meu primeiro código Go
package main // importa o pacote main

import "fmt" // utilizando a biblioteca fmt para Println

func main (){ // função principal
  fmt.Println("Olá, Golang!") // Imprimindo
}
/*
Para rodar e/ou compilar use respectivamente
$ go run hello.go

OU

$ go build hello.go
$ ./hello

*/
Enter fullscreen mode Exit fullscreen mode

Bom, por esse Episódio 01 da Série Go já tá de bom tamanho, lhe espero nos próximos episódios!

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

DEV is better (more customized, reading settings like dark mode etc) when you're signed in!

Okay