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)

B8b6a984643172f33a211450a1fe3285?s=128

Marco Paulo Ollivier

November 21, 2019
Tweet

Transcript

  1. Uma introdução ao Go Go não é apenas uma linguagem

    para o Google @marcopollivier
  2. Análise de Sistemas Software Engineer Instrutor @ DIO Co-organizador @

    GopheRio Palestrante Ciência de dados e Big Data
  3. Como esse material foi pensado? Com a ajuda da comunidade

    =)
  4. None
  5. None
  6. 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?
  7. 1Um introdução ao Go Um pouco de contexto

  8. "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/
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. Go não é apenas para CLIs Uma introdução ao Go

    1. Um pouco de contexto Fonte: https://go.dev/
  15. 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
  16. Cases de sucesso - Docker - Kubernetes - Runner Gitlab

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

    de contexto Fonte: https://go.dev/
  18. 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
  19. 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
  20. 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/
  21. Pontos fracos Uma introdução ao Go 1. Um pouco de

    contexto - Polimorfismo - Tratamento atual de erros - Generics
  22. 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
  23. Pontos fortes Uma introdução ao Go 1. Um pouco de

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

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

    contexto Fonte: https://go.dev/
  26. Comunidades no Brasil Uma introdução ao Go 1. Um pouco

    de contexto
  27. 2Um introdução ao Go Vamos preparar a casa

  28. 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/
  29. 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
  30. 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
  31. Passo 4: Teste Uma introdução ao Go $ go run

    arquivo.go 2. Vamos preparar a casa
  32. 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
  33. Ambiente de desenvolvimento Uma introdução ao Go 2. Vamos preparar

    a casa
  34. 3Um introdução ao Go Primeiros passos

  35. Hello, world! Uma introdução ao Go 3. Primeiros passos Declaração

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

    maneira de importar Entrypoint 3. Primeiros passos
  37. 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/
  38. 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
  39. 4Um introdução ao Go Mão na massa

  40. 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
  41. O que vamos fazer? Uma introdução ao Go 4. Mão

    na massa Uma API REST
  42. 5Um introdução ao Go Considerações finais

  43. ollivier.com.br @marcopollivier