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

Conhecendo a linguagem de programação Go

Conhecendo a linguagem de programação Go

Uma introdução breve e direta sobre os principais pontos e características da linguagem de programação Go.

Vinicius Reis

May 19, 2021
Tweet

More Decks by Vinicius Reis

Other Decks in Programming

Transcript

  1. Conhecendo a linguagem
    de programação Go

    View Slide

  2. Vinicius Reis
    @vinicius73
    @LuizVinicius73
    Escrevo artigos sobre Vue.js e JavaScript.
    vinicius73.dev
    Plataformas @ M4U
    @vinicius73

    View Slide

  3. Golang
    Criado originalmente por Robert Griesemer, Rob
    Pike e Ken Thompson na Google, em 2007, se
    tornando um projeto de código aberto em 2009.
    Antes do Go essa galera já trabalhou em coisas como UNIX, UTF-8, B Lang, C++...

    View Slide

  4. Características chave
    - Tipagem estática
    - Paralelismo e concorrência
    - Garbage Collector
    - Binário estático
    - Curva de aprendizagem baixa
    - Simplicidade

    View Slide

  5. Palavras reservadas
    Há um total de 25 palavras reservadas no Go, que não
    podem ser usadas como identificadores.
    Java 54
    PHP 70
    Ruby 36
    JS 64
    Python 33

    View Slide

  6. Hello World
    Todo código Go estará dentro de
    um pacote.
    Para definir o “entry point” de um programa Go,
    criamos o pacote main seguido da função main.
    https://dev.to/linivecristine/meu-primeiro-hello-world-em-go-11dh

    View Slide

  7. Simplicidade
    Um dos focos do Go é a simplicidade, isso é percebido
    e sentido em tudo que é feito com Go.
    Desde as decisões de design da linguagem em si até o
    código que é produzido com ele.
    Raramente há duas formas de fazer algo em Go.

    View Slide

  8. Simplicidade No Bikeshedding
    A linguagem não quer te dar espaço para discutir
    coisas como espaçamentos ou o uso de ;
    Go possui nativamente ferramentas de linter e
    formatação que sempre estão presentes durante o
    desenvolvimento.
    O debate do código naturalmente fica em torno das regras de
    negócio e não de como ele poderia ser escrito.

    View Slide

  9. Visibilidade
    Tudo em go estará dentro de pacotes, a
    visibilidade desse “tudo” (funções, variáveis,
    constantes, tipos...) é definida com a presença
    da letra maiúscula no começo do identificador.
    A linguagem te incentiva a sempre documentar o que é
    público.

    View Slide

  10. Retornos múltiplos
    É possível devolver mais de um valor em
    uma função.
    O caso de uso mais comum é o tratamento
    de erros.
    De forma geral não há exceções do Go, não há
    try/catch.

    View Slide

  11. Interfaces
    Interfaces representam os métodos que uma struct
    precisa ter.
    Basta a struct ter os métodos que ela
    automaticamente será compatível com a interface.
    A interface nem precisa estar publicamente disponível no módulo.

    View Slide

  12. Defer
    É muito comum ter que executar alguma coisa
    “antes” que uma determinada função termine
    sua lógica.
    Defer simplifica este cenário, determinada
    ação marcada com defer será executada antes
    do retorno/fim da função.
    https://www.digitalocean.com/community/tutorials/understanding-defer-in-go-pt

    View Slide

  13. Goroutines
    Paralelismo e concorrência.
    Go fornece um conjunto de ferramentas
    dedicadas a situações de multi-threading.
    Incluindo comunicação entre goroutines e
    prevenção de race condition.
    A palavra reservada go faz a execução de uma
    função ir para “segundo plano”.

    View Slide

  14. Goroutines > Concorrência ou paralelismo?
    De forma geral não importa, Go vai
    provisionar as goroutines conforme os
    recursos (núcleos) da máquina.
    Também é possível determinar quantos
    núcleos o programa vai utilizar, criando um
    controle fino do uso de recursos.

    View Slide

  15. Onde Go Brilha?
    Em todo lugar ❤

    View Slide

  16. Onde Go Brilha?
    - Processos concorrentes ou
    paralelos, quando se precisa
    extrair o máximo possível do
    hardware.
    - Plataformas embarcadas e com
    poucos recursos.
    - Ferramentas ou sistemas
    multi-plataformas.

    View Slide

  17. Onde Go Brilha?
    - Processamento de grande volume de
    dados/arquivos.
    - APIs de alta demanda e baixo custo.
    - Agentes para interação com recursos
    do OS ou outros softwares.
    - Sidecars
    - Entrega com um único binário.

    View Slide

  18. Entrega com um único binário.
    Um projeto Go compilado para
    produção costuma ter tamanho médio
    de 12MB ~ 30MB, ainda é possível
    diminuir este tamanho usando técnicas
    de otimização pós build.
    Devido a isso deploys com Go
    costumam ser muito mais rápidos
    quando comparados a outras stacks.

    View Slide

  19. E quem usa isso?

    View Slide

  20. Comece a explorar
    bit.ly/go-vscode bit.ly/go-jetbrains bit.ly/go-vim
    gobyexample.com

    View Slide

  21. Obrigado!

    View Slide