Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução a linguagem de programação Go

Introdução a linguagem de programação Go

Este projeto foi criado com o objetivo de dar suporte ao Webinar totalmente gratuito feito em parceria com
a Digital Innovation One (https://digitalinnovation.one) sobre
Introdução a linguagem de programação Go (https://web.digitalinnovation.one/project/0a98bfbf-cf22-4923-8425-38bfa686bc71)

Marco Paulo Ollivier

November 21, 2019
Tweet

More Decks by Marco Paulo Ollivier

Other Decks in Technology

Transcript

  1. Análise de Sistemas Software Engineer Instrutor @ DIO Co-organizador @

    GopheRio Palestrante Ciência de dados e Big Data
  2. Agenda • Um pouco de contexto • Vamos preparar a

    casa • Primeiros passos • Mão na massa • Considerações finais Uma introdução ao Go Como esse material foi pensado?
  3. "Go é uma linguagem de programação de código aberto que

    facilita a criação de softwares simples, confiáveis e eficientes” Uma introdução ao Go 1. Um pouco de contexto Definição oficial https://golang.org/
  4. Linha do tempo - Criada em 2007 por Robert Griesemer,

    Rob Pike e Ken Thompson - Lançada em 2009 - Go 1 (Março 2012) - Go 1.1 (Maio 2013) (…) - Go 1.10 (Fevereiro 2018) - Go 1.11 (Agosto 2018) - Go 1.12 (Fevereiro 2019) - Go 1.13 (Setembro 2019 - Versão estável mais recente) Uma introdução ao Go 1. Um pouco de contexto
  5. Go não é apenas um C com vidro elétrico Existe

    influência da herança do C, mas Go vai além... "(Go) ... apresenta e adapta boas ideias de várias outras linguagens, ao mesmo tempo que evita funcionalidades que resultam em complexidade e em códigos não confiáveis." - Recursos novos e eficientes de concorrência - Recursos para abstração de dados e OO são muito bons - Gerenciamento de memória automático (GC) Uma introdução ao Go 1. Um pouco de contexto
  6. Mas herdou muita coisa legal (C para o século XXI)

    - Sintaxe de suas expressões - Instruções de controle de fluxo - Tipos básicos de dados - Passagem de parâmetro por valor - Ponteiros - Geração de código de máquina eficiente Uma introdução ao Go 1. Um pouco de contexto
  7. Outras heranças - Modula-2 e Oberon-2: conceito de pacotes -

    CSP (linguagem acadêmica): fundamentos de concorrência Uma introdução ao Go 1. Um pouco de contexto
  8. Go não é apenas para CLIs Go é muito bom

    para criação de CLIs, mas também é bom para… - Backend - Computer Vision - Machine Learning - IoT - Etc Uma introdução ao Go 1. Um pouco de contexto
  9. Go não é apenas para CLIs Uma introdução ao Go

    1. Um pouco de contexto Fonte: https://go.dev/
  10. Hello, IoT Uma introdução ao Go 1. Um pouco de

    contexto Fonte: https://gobot.io/ Este código se conectará ao Arduino e vai piscar um Led a cada segundo
  11. Cases de sucesso - Docker - Kubernetes - Runner Gitlab

    CI - Traefik - … Uma introdução ao Go 1. Um pouco de contexto
  12. Cases de sucesso Uma introdução ao Go 1. Um pouco

    de contexto Fonte: https://go.dev/
  13. Go não é só uma linguagem para o Google -

    Go nasceu por conta da complexidade de códigos de soluções do Google - Convenhamos que não é só o Google que tem problemas com complexidade de soluções - Então… Go não é só uma linguagem para o Google Uma introdução ao Go 1. Um pouco de contexto
  14. Go não é só uma linguagem para o Google -

    A linguagem escalou e a comunidade ganhou força - Gerenciamento de dependência - Generics - Tratamento de erros Uma introdução ao Go 1. Um pouco de contexto
  15. Com a palavra: Ryan Dahl, criador do Node.JS Uma introdução

    ao Go 1. Um pouco de contexto "[...] I think Node is not the best system to build a massive server web. I would use Go for that. And honestly, that’s the reason why I left Node. It was the realization that: oh, actually, this is not the best server-side system ever." -- "[...] eu acho que o Node não é o melhor sistema para construir um servidor web massivo. Eu usaria o Go para isso. E honestamente, essa é a razão pela qual eu deixei o Node. Foi a percepção de que: oh, na verdade, não é o melhor sistema do lado do servidor. " Fonte: https://edneypitta.com/on-node-go-concurrency/
  16. Pontos fracos Uma introdução ao Go 1. Um pouco de

    contexto - Polimorfismo - Tratamento atual de erros - Generics
  17. Pontos fortes Uma introdução ao Go 1. Um pouco de

    contexto - Tipagem forte e estática - Inferência de tipo - Compilada - GC - Concorrência - Rápida - Simples - Até mesmo divertida
  18. Pontos fortes Uma introdução ao Go 1. Um pouco de

    contexto Go é uma linguagem que podemos considerar como “multiparadigma" - O.O. - Procedural - Funcional
  19. Pontos fortes Uma introdução ao Go 1. Um pouco de

    contexto - Suporte aos usuários - play.golang.org - Documentação https://go.dev/
  20. Pontos fortes Uma introdução ao Go 1. Um pouco de

    contexto Fonte: https://go.dev/
  21. Passo 1: Faça o Download com base no seu SO

    Uma introdução ao Go 2. Vamos preparar a casa https://golang.org/dl/
  22. Passo 2: Instale Uma introdução ao Go Esse é o

    exemplo do instalador .pkg para macOS. Nesse cenário o Go será instalado na pasta /usr/local/go 2. Vamos preparar a casa
  23. Passo 3: Configure as variáveis de ambiente Uma introdução ao

    Go https://github.com/golang/go/wiki/SettingGOPA 2. Vamos preparar a casa
  24. Passo 4: Teste Uma introdução ao Go $ go run

    arquivo.go 2. Vamos preparar a casa
  25. O que é o GOROOT e o GOPATH? Uma introdução

    ao Go 2. Vamos preparar a casa Basicamente o GOROOT é o local onde está a instalação do Go. Na Documentação Oficial, nem faz mais referência a essa variável fazendo referência a exportar o caminho direto no $PATH Já o GOPATH é a localização do seu workspace. No meu caso, meu workspace fica em $HOME/workspace
  26. Hello, world! Uma introdução ao Go 3. Primeiros passos Declaração

    de pacote Importação de pacotes Entrypoint
  27. Hello, world! Uma introdução ao Go Declaração de pacote Outra

    maneira de importar Entrypoint 3. Primeiros passos
  28. Pacote fmt Uma introdução ao Go Similar ao printf scan

    do C 3. Primeiros passos O pacote fmt implementa I/O formatado https://golang.org/pkg/fmt/
  29. Pacotes Uma introdução ao Go 3. Primeiros passos - Lower

    case - De preferência uma única palavra - Mas se necessário use camelCase - Nunca usar a_a_a - Não se preocupe com nomes repetidos - Possibilidade de definir um apelido ao pacote caso tenha o mesmo nome
  30. Alex Garzão Soft. Engineer @ Zenvia “… mais de uma

    pessoa que me abordou (…) tem a imagem do Go ser só para projetos complexos.” “… um dia um colega veio me perguntar se dava para usar Go para fazer uma API simples (…) ele achava que seria muito complexo fazer isso em Go (…) e eu mostrei a ele que não." Uma introdução ao Go 4. Mão na massa