Skip to content

Latest commit

 

History

History
670 lines (573 loc) · 37.8 KB

README.md

File metadata and controls

670 lines (573 loc) · 37.8 KB

Aprenda Go

Build, Publish, Tag and Release CodeQL Trivy vulnerability scan Dependabot Updates

Linux macOS Windows

Go Reference DockerHub

Origem do Projeto

Curso de Go para iniciantes. Aprenda Go é um curso abrangente que ensina desde o básico até tópicos avançados da linguagem Go. Ministrado por Ellen Körbes, uma entusiasta da linguagem, o curso é gratuito e está disponível no YouTube e no GitHub. Acesse a playlist no YouTube aqui e o repositório no GitHub aqui.

Objetivo

Este projeto tem como objetivo criar um CLI para facilitar a navegação e o acesso ao conteúdo do curso Aprenda Go. O CLI foi desenvolvido em Go e utiliza as bibliotecas padrão da linguagem para criar um menu interativo que permite ao usuário acessar os tópicos do curso. O CLI esta sendo desenvolvido como parte da prática de estudos da linguagem Go.

Afim de contribuir?

Se você deseja contribuir com o projeto, fique à vontade para abrir uma issue ou submeter um pull request. Sua contribuição é muito bem-vinda!

Montando o Ambiente de Desenvolvimento

Faça o clone do repositório:

git clone https://github.com/fabianoflorentino/aprendago.git

Construa a imagem Docker

docker compose build --no-cache

Inicie o container

docker compose up -d

Parando o container

docker compose down

Testando o CLI

Menu Caps (Capítulos)

docker compose exec -it aprendago /bin/sh -c 'go run cmd/aprendago/main.go --caps'
Aprenda GO

Capítulos do Curso

  --cap=1 --topics    Visão Geral do Curso
  --cap=2 --topics    Variáveis, Valores e Tipos
  --cap=3 --topics    Exercícios Ninja: Nível 1
  --cap=4 --topics    Fundamentos da Programação
  --cap=5 --topics    Exercícios Ninja: Nível 2
  --cap=6 --topics    Fluxo de Controle
  --cap=7 --topics    Exercícios Ninja: Nível 3
  --cap=8 --topics    Agrupamento de Dados
  --cap=9 --topics    Exercícios Ninja: Nível 4
  --cap=10 --topics   Structs
  --cap=11 --topics   Exercícios Ninja: Nível 5
  --cap=12 --topics   Funções
  --cap=13 --topics   Exercícios Ninja: Nível 6
  --cap=14 --topics   Ponteiros
  --cap=15 --topics   Exercícios Ninja: Nível 7
  --cap=16 --topics   Aplicações
  --cap=17 --topics   Exercícios Ninja: Nível 8
  --cap=18 --topics   Concorrência
  --cap=19 --topics   Seu Ambiente de Desenvolvimento
  --cap=20 --topics   Exercícios Ninja: Nível 9
  --cap=21 --topics   Canais
  --cap=22 --topics   Exercícios Ninja: Nível 10
  --cap=23 --topics   Tratamento de Erro
  --cap=24 --topics   Exercícios Ninja: Nível 11

Ajuda

docker compose exec -it aprendago /bin/sh -c 'go run cmd/aprendago/main.go --help'
Learn GO


Uso: go run cmd/aprendago/main.go [opção]

Exemplo:
  go run cmd/aprendago/main.go --bem-vindo

Ajuda:

--outline  Exibe o outline completo do curso.
--help     Exibe a lista de todas as opções disponíveis.
--caps     Exibe a lista de capítulos disponíveis.

Capítulos do Curso

  --cap=1 --topics    Visão Geral do Curso
  --cap=2 --topics    Variáveis, Valores e Tipos
  --cap=3 --topics    Exercícios Ninja: Nível 1
  --cap=4 --topics    Fundamentos da Programação
  --cap=5 --topics    Exercícios Ninja: Nível 2
  --cap=6 --topics    Fluxo de Controle
  --cap=7 --topics    Exercícios Ninja: Nível 3
  --cap=8 --topics    Agrupamento de Dados
  --cap=9 --topics    Exercícios Ninja: Nível 4
  --cap=10 --topics   Structs
  --cap=11 --topics   Exercícios Ninja: Nível 5
  --cap=12 --topics   Funções
  --cap=13 --topics   Exercícios Ninja: Nível 6
  --cap=14 --topics   Ponteiros
  --cap=15 --topics   Exercícios Ninja: Nível 7
  --cap=16 --topics   Aplicações
  --cap=17 --topics   Exercícios Ninja: Nível 8
  --cap=18 --topics   Concorrência
  --cap=19 --topics   Seu Ambiente de Desenvolvimento
  --cap=20 --topics   Exercícios Ninja: Nível 9
  --cap=21 --topics   Canais
  --cap=22 --topics   Exercícios Ninja: Nível 10
  --cap=23 --topics   Tratamento de Erro
  --cap=24 --topics   Exercícios Ninja: Nível 11
  --cap=25 --topics   Documentação
  --cap=26 --topics   Exercícios Ninja: Nível 12
  --cap=27 --topics   Teste e Benchmarking

Outline do Curso por Capítulo

  --cap=1 --overview    Visão Geral do Curso
  --cap=2 --overview    Variáveis, Valores & Tipos
  --cap=3 --overview    Exercícios Ninja Nível 1
  --cap=4 --overview    Fundamentos da Programação
  --cap=5 --overview    Exercícios Ninja Nível 2
  --cap=6 --overview    Fluxo de Controle
  --cap=7 --overview    Exercícios Ninja Nível 3
  --cap=8 --overview    Agrupamento de Dados
  --cap=9 --overview    Exercícios Ninja Nível 4
  --cap=10 --overview   Structs
  --cap=11 --overview   Exercícios Ninja Nível 5
  --cap=12 --overview   Funções
  --cap=13 --overview   Exercícios Ninja Nível 6
  --cap=14 --overview   Ponteiros
  --cap=15 --overview   Exercícios Ninja Nível 7
  --cap=16 --overview   Aplicações
  --cap=17 --overview   Exercícios Ninja Nível 8
  --cap=18 --overview   Concorrência
  --cap=19 --overview   Seu Ambiente de Desenvolvimento
  --cap=20 --overview   Exercícios Ninja Nível 9
  --cap=21 --overview   Canais
  --cap=22 --overview   Exercícios Ninja Nível 10
  --cap=23 --overview   Tratamento de Erro
  --cap=24 --overview   Exercícios Ninja Nível 11
  --cap=25 --overview   Documentação
  --cap=26 --overview   Exercícios Ninja Nível 12
  --cap=27 --overview   Teste e Benchmarking

Capítulo 1: Visão Geral do Curso

  --bem-vindo                  Exibe a mensagem de boas-vindas ao curso Aprenda Go.
  --porque-go                  Descreve os benefícios e razões para aprender a linguagem Go.
  --sucesso                    Apresenta dicas e estratégias para ter sucesso no curso.
  --recursos                   Lista recursos e materiais de apoio para o curso.
  --como-esse-curso-funciona   Explica a estrutura e metodologia do curso.

Capítulo 2: Variáveis, Valores e Tipos

  --go-playground                  Exibe o Go Playground.
  --hello-world                    Exibe o Hello World.
  --operador-curto-de-declaracao   Exibe o operador curto de declaração.
  --a-palavra-reservada-var        Exibe a palavra reservada var.
  --explorando-tipos               Exibe como explorar tipos.
  --valor-zero                     Exibe o valor zero.
  --o-pacote-fmt                   Exibe o pacote fmt.
  --criando-seu-proprio-tipo       Exibe como criar seu próprio tipo.
  --conversao-nao-coercao          Exibe a conversão não coerção.

Capítulo 3: Exercícios Ninja Nível 1

  --na-pratica-exercicio-1 --nivel-1               Apresenta o primeiro exercício prático do curso.
  --na-pratica-exercicio-1 --nivel-1 --resolucao   Exibe a resolução do primeiro exercício prático.
  --na-pratica-exercicio-2 --nivel-1               Apresenta o segundo exercício prático do curso.
  --na-pratica-exercicio-2 --nivel-1 --resolucao   Exibe a resolução do segundo exercício prático.
  --na-pratica-exercicio-3 --nivel-1               Apresenta o terceiro exercício prático do curso.
  --na-pratica-exercicio-3 --nivel-1 --resolucao   Exibe a resolução do terceiro exercício prático.
  --na-pratica-exercicio-4 --nivel-1               Apresenta o quarto exercício prático do curso.
  --na-pratica-exercicio-4 --nivel-1 --resolucao   Exibe a resolução do quarto exercício prático.
  --na-pratica-exercicio-5 --nivel-1               Apresenta o quinto exercício prático do curso.
  --na-pratica-exercicio-5 --nivel-1 --resolucao   Exibe a resolução do quinto exercício prático.
  --na-pratica-exercicio-6 --nivel-1               Apresenta o sexto exercício prático do curso.
  --na-pratica-exercicio-6 --nivel-1 --prova       Exibe a prova do sexto exercício prático.

Capítulo 4: Fundamentos da Programação

  --tipo-booleano                    Explora o tipo de dados booleano em Go.
  --como-os-computadores-funcionam   Descreve o funcionamento dos computadores e sua importância para a programação.
  --tipos-numericos                  Explora os tipos numéricos em Go.
  --overflow                         Discute o conceito de overflow e como ele pode afetar seu código.
  --tipo-string                      Explora o tipo de dados string em Go.
  --sistemas-numericos               Apresenta os sistemas numéricos e sua importância para a programação.
  --constantes                       Detalha o uso de constantes em Go.
  --iota                             Explora o uso do identificador iota em Go.
  --deslocamento-de-bits             Discute o conceito de deslocamento de bits em Go.

Capítulo 5: Exercícios Ninja - Nível 2

  --na-pratica-exercicio-1 --nivel-2               Apresenta o primeiro exercício prático do nível 2.
  --na-pratica-exercicio-1 --nivel-2 --resolucao   Exibe a resolução do primeiro exercício prático do nível 2.
  --na-pratica-exercicio-2 --nivel-2               Apresenta o segundo exercício prático do nível 2.
  --na-pratica-exercicio-2 --nivel-2 --resolucao   Exibe a resolução do segundo exercício prático do nível 2.
  --na-pratica-exercicio-3 --nivel-2               Apresenta o terceiro exercício prático do nível 2.
  --na-pratica-exercicio-3 --nivel-2 --resolucao   Exibe a resolução do terceiro exercício prático do nível 2.
  --na-pratica-exercicio-4 --nivel-2               Apresenta o quarto exercício prático do nível 2.
  --na-pratica-exercicio-4 --nivel-2 --resolucao   Exibe a resolução do quarto exercício prático do nível 2.
  --na-pratica-exercicio-5 --nivel-2               Apresenta o quinto exercício prático do nível 2.
  --na-pratica-exercicio-5 --nivel-2 --resolucao   Exibe a resolução do quinto exercício prático do nível 2.
  --na-pratica-exercicio-6 --nivel-2               Apresenta o sexto exercício prático do nível 2.
  --na-pratica-exercicio-6 --nivel-2 --resolucao   Exibe a resolução do sexto exercício prático do nível 2.
  --na-pratica-exercicio-7 --nivel-2               Apresenta o sétimo exercício prático do nível 2.
  --na-pratica-exercicio-7 --nivel-2 --prova       Exibe a prova do sétimo exercício prático do nível 2.

Capípulo 6: Fluxo de Controle

  --entendendo-fluxo-de-controle           Explica o conceito de fluxo de controle em Go.
  --loops-inicializacao-condicao-pos       Detalha o uso de loops com inicialização, condição e pós em Go.
  --loops-nested-loop                      Explora o conceito de loops aninhados em Go.
  --loops-a-declaracao-for                 Apresenta a declaração for em Go.
  --loops-break-e-continue                 Discute as instruções break e continue em loops em Go.
  --loops-utilizando-ascii                 Desafio surpresa: utilize ASCII para exibir texto em Go.
  --loops-utilizando-ascii --resolucao     Desafio surpresa: utilize ASCII para exibir texto em Go.
  --condicionais-a-declaracao-if           Apresenta a declaração if em Go.
  --condicionais-if-else-if-else           Detalha a declaração if-else-if-else em Go.
  --condicionais-a-declaracao-switch       Apresenta a declaração switch em Go.
  --condicionais-a-declaracao-switch-pt2   Detalha a declaração switch em Go.
  --operadores-logicos-condicionais        Explora os operadores lógicos condicionais em Go.

Capítulo 7: Exercícios Ninja Nível 3

  --na-pratica-exercicio-1 --nivel-3                Apresenta o primeiro exercício prático do nível 3.
  --na-pratica-exercicio-1 --nivel-3 --resolucao    Exibe a resolução do primeiro exercício prático do nível 3.
  --na-pratica-exercicio-2 --nivel-3                Apresenta o segundo exercício prático do nível 3.
  --na-pratica-exercicio-2 --nivel-3 --resolucao    Exibe a resolução do segundo exercício prático do nível 3.
  --na-pratica-exercicio-3 --nivel-3                Apresenta o terceiro exercício prático do nível 3.
  --na-pratica-exercicio-3 --nivel-3 --resolucao    Exibe a resolução do terceiro exercício prático do nível 3.
  --na-pratica-exercicio-4 --nivel-3                Apresenta o quarto exercício prático do nível 3.
  --na-pratica-exercicio-4 --nivel-3 --resolucao    Exibe a resolução do quarto exercício prático do nível 3.
  --na-pratica-exercicio-5 --nivel-3                Apresenta o quinto exercício prático do nível 3.
  --na-pratica-exercicio-5 --nivel-3 --resolucao    Exibe a resolução do quinto exercício prático do nível 3.
  --na-pratica-exercicio-6 --nivel-3                Apresenta o sexto exercício prático do nível 3.
  --na-pratica-exercicio-6 --nivel-3 --resolucao    Exibe a resolução do sexto exercício prático do nível 3.
  --na-pratica-exercicio-7 --nivel-3                Apresenta o sétimo exercício prático do nível 3.
  --na-pratica-exercicio-7 --nivel-3 --resolucao    Exibe a resolução do sétimo exercício prático do nível 3.
  --na-pratica-exercicio-8 --nivel-3                Apresenta o oitavo exercício prático do nível 3.
  --na-pratica-exercicio-8 --nivel-3 --resolucao    Exibe a resolução do oitavo exercício prático do nível 3.
  --na-pratica-exercicio-9 --nivel-3                Apresenta o nono exercício prático do nível 3.
  --na-pratica-exercicio-9 --nivel-3 --resolucao    Exibe a resolução do nono exercício prático do nível 3.
  --na-pratica-exercicio-10 --nivel-3               Apresenta o décimo exercício prático do nível 3.
  --na-pratica-exercicio-10 --nivel-3 --resolucao   Exibe a resolução do décimo exercício prático do nível 3.

Capítulo 8: Agrupamento de Dados

  --array                                                  Apresenta o tópico Array.
  --slice-literal-composta                                 Apresenta o tópico Slice Literal Composta.
  --slice-for-range                                        Apresenta o tópico Slice: for range.
  --slice-fatiando-ou-deletando-de-uma-fatia               Apresenta o tópico Slice: fatiando ou deletando de uma fatia.
  --slice-fatiando-ou-deletando-de-uma-fatia --resolucao   Apresenta a resolução do tópico Slice: fatiando ou deletando de uma fatia.
  --slice-anexando-a-uma-slice                             Apresenta o tópico Slice: anexando a uma slice.
  --slice-make                                             Apresenta o tópico Slice: Make.
  --slice-multi-dimensional                                Apresenta o tópico Slice: Multi Dimensional.
  --slice-a-surpresa-do-array-subjacente                   Apresenta o tópico Slice: a surpresa do array subjacente.
  --maps-introducao                                        Apresenta o tópico Maps: introdução.
  --maps-range-e-deletando                                 Apresenta o tópico Maps: Range e Deletando.

Capítulo 9: Exercícios Ninja Nível 4

  --na-pratica-exercicio-1 --nivel-4                Apresenta o primeiro exercício prático do Nível 4.
  --na-pratica-exercicio-1 --nivel-4 --resolucao    Exibe a resolução do primeiro exercício prático do Nível 4.
  --na-pratica-exercicio-2 --nivel-4                Apresenta o segundo exercício prático do Nível 4.
  --na-pratica-exercicio-2 --nivel-4 --resolucao    Exibe a resolução do segundo exercício prático do Nível 4.
  --na-pratica-exercicio-3 --nivel-4                Apresenta o terceiro exercício prático do Nível 4.
  --na-pratica-exercicio-3 --nivel-4 --resolucao    Exibe a resolução do terceiro exercício prático do Nível 4.
  --na-pratica-exercicio-4 --nivel-4                Apresenta o quarto exercício prático do Nível 4.
  --na-pratica-exercicio-4 --nivel-4 --resolucao    Exibe a resolução do quarto exercício prático do Nível 4.
  --na-pratica-exercicio-5 --nivel-4                Apresenta o quinto exercício prático do Nível 4.
  --na-pratica-exercicio-5 --nivel-4 --resolucao    Exibe a resolução do quinto exercício prático do Nível 4.
  --na-pratica-exercicio-6 --nivel-4                Apresenta o sexto exercício prático do Nível 4.
  --na-pratica-exercicio-6 --nivel-4 --resolucao    Exibe a resolução do sexto exercício prático do Nível 4.
  --na-pratica-exercicio-7 --nivel-4                Apresenta o sétimo exercício prático do Nível 4.
  --na-pratica-exercicio-7 --nivel-4 --resolucao    Exibe a resolução do sétimo exercício prático do Nível 4.
  --na-pratica-exercicio-8 --nivel-4                Apresenta o oitavo exercício prático do Nível 4.
  --na-pratica-exercicio-8 --nivel-4 --resolucao    Exibe a resolução do oitavo exercício prático do Nível 4.
  --na-pratica-exercicio-9 --nivel-4                Apresenta o nono exercício prático do Nível 4.
  --na-pratica-exercicio-9 --nivel-4 --resolucao    Exibe a resolução do nono exercício prático do Nível 4.
  --na-pratica-exercicio-10 --nivel-4               Apresenta o décimo exercício prático do Nível 4.
  --na-pratica-exercicio-10 --nivel-4 --resolucao   Exibe a resolução do décimo exercício prático do Nível 4.

 Capítulo 10: Structs

  --structs                Structs
  --structs-embutidos      Structs Embutidos
  --lendo-a-documentacao   Lendo a documentação
  --structs-anonimos       Structs Anônimos

Capítulo 11: Exercícios Ninja Nível 5

  --na-pratica-exercicio-1 --nivel-5               Apresenta o primeiro exercício prático do Nível 5.
  --na-pratica-exercicio-1 --nivel-5 --resolucao   Exibe a resolução do primeiro exercício prático do Nível 5.
  --na-pratica-exercicio-2 --nivel-5               Apresenta o segundo exercício prático do Nível 5.
  --na-pratica-exercicio-2 --nivel-5 --resolucao   Exibe a resolução do segundo exercício prático do Nível 5.
  --na-pratica-exercicio-3 --nivel-5               Apresenta o terceiro exercício prático do Nível 5.
  --na-pratica-exercicio-3 --nivel-5 --resolucao   Exibe a resolução do terceiro exercício prático do Nível 5.
  --na-pratica-exercicio-4 --nivel-5               Apresenta o quarto exercício prático do Nível 5.
  --na-pratica-exercicio-4 --nivel-5 --resolucao   Exibe a resolução do quarto exercício prático do Nível 5.

Capítulo 12: Funções

  --sintaxe                            Sintaxe de declaração de função
  --desenroland-enumerando-uma-slice   Descreve como iterar (enumerar) uma slice
  --defer                              Descreve o uso da declaração defer
  --metodos                            Descreve o que são métodos em Go
  --interfaces-e-polimorfismo          Descreve o que são interfaces e polimorfismo em Go
  --funcoes-anonimas                   Descreve o que são funções anônimas em Go
  --func-como-expressa                 Descreve como declarar funções como expressões
  --retornando-uma-funcao              Descreve como retornar uma função em Go
  --callback                           Descreve o que é um callback em Go
  --resolucao-desafio-callback         Mostra a resolução do desafio de callback
  --closure                            Descreve o que é um closure em Go
  --recursividade                      Descreve o que é recursividade em Go

Capítulo 13: Exercícios Ninja Nível 6

  --na-pratica-exercicio-1 --nivel-6                Apresenta o primeiro exercício prático do Nível 6.
  --na-pratica-exercicio-1 --nivel-6 --resolucao    Apresenta a resolução do primeiro exercício prático do Nível 6.
  --na-pratica-exercicio-2 --nivel-6                Apresenta o segundo exercício prático do Nível 6.
  --na-pratica-exercicio-2 --nivel-6 --resolucao    Apresenta a resolução do segundo exercício prático do Nível 6.
  --na-pratica-exercicio-3 --nivel-6                Apresenta o terceiro exercício prático do Nível 6.
  --na-pratica-exercicio-3 --nivel-6 --resolucao    Apresenta a resolução do terceiro exercício prático do Nível 6.
  --na-pratica-exercicio-4 --nivel-6                Apresenta o quarto exercício prático do Nível 6.
  --na-pratica-exercicio-4 --nivel-6 --resolucao    Apresenta a resolução do quarto exercício prático do Nível 6.
  --na-pratica-exercicio-5 --nivel-6                Apresenta o quinto exercício prático do Nível 6.
  --na-pratica-exercicio-5 --nivel-6 --resolucao    Apresenta a resolução do quinto exercício prático do Nível 6.
  --na-pratica-exercicio-6 --nivel-6                Apresenta o sexto exercício prático do Nível 6.
  --na-pratica-exercicio-6 --nivel-6 --resolucao    Apresenta a resolução do sexto exercício prático do Nível 6.
  --na-pratica-exercicio-7 --nivel-6                Apresenta o sétimo exercício prático do Nível 6.
  --na-pratica-exercicio-7 --nivel-6 --resolucao    Apresenta a resolução do sétimo exercício prático do Nível 6.
  --na-pratica-exercicio-8 --nivel-6                Apresenta o oitavo exercício prático do Nível 6.
  --na-pratica-exercicio-8 --nivel-6 --resolucao    Apresenta a resolução do oitavo exercício prático do Nível 6.
  --na-pratica-exercicio-9 --nivel-6                Apresenta o nono exercício prático do Nível 6.
  --na-pratica-exercicio-9 --nivel-6 --resolucao    Apresenta a resolução do nono exercício prático do Nível 6.
  --na-pratica-exercicio-10 --nivel-6               Apresenta o décimo exercício prático do Nível 6.
  --na-pratica-exercicio-10 --nivel-6 --resolucao   Apresenta a resolução do décimo exercício prático do Nível 6.
  --na-pratica-exercicio-11 --nivel-6               Apresenta o décimo primeiro exercício prático do Nível 6.
  --na-pratica-exercicio-11 --nivel-6 --resolucao   Apresenta a resolução do décimo primeiro exercício prático do Nível 6.

Capítulo 14: Ponteiros

  --o-que-sao-ponteiros     Descreve o que são ponteiros em Go
  --quando-usar-ponteiros   Descreve quando usar ponteiros em Go

Capítulo 15: Exercícios Ninja - Nível 7

  --na-pratica-exercicio-1 --nivel-7               Apresenta o primeiro exercício prático do Nível 7.
  --na-pratica-exercicio-1 --nivel-7 --resolucao   Apresenta a resolução do primeiro exercício prático do Nível 7.
  --na-pratica-exercicio-2 --nivel-7               Apresenta o segundo exercício prático do Nível 7.
  --na-pratica-exercicio-2 --nivel-7 --resolucao   Apresenta a resolução do segundo exercício prático do Nível 7.

Capítulo 16: Aplicações

  --documentacao-json                              Descreve como documentar um pacote em Go
  --documentacao-json --example --json-marshal     Exemplo de como ordenar um JSON
  --documentacao-json --example --json-unmarshal   Exemplo de como desordenar um JSON
  --documentacao-json --example --json-encoder     Exemplo de como usar o encoder JSON
  --json-marshal                                   Descreve o pacote json.Marshal
  --json-unmarshal                                 Descreve o pacote json.Unmarshal
  --interface-writer                               Descreve o que é a interface Writer
  --pacote-sort                                    Descreve o pacote sort
  --pacote-sort --example                          Exemplo de como usar o pacote sort
  --customizando-sort --example                    Descreve como customizar o pacote sort
  --bcrypt                                         Descreve o pacote bcrypt

Capítulo 17: Exercícios Ninja Nível 8

  --na-pratica-exercicio-1 --nivel-8               Apresenta o primeiro exercício prático do Nível 8.
  --na-pratica-exercicio-1 --nivel-8 --resolucao   Apresenta a resolução do primeiro exercício prático do Nível 8.
  --na-pratica-exercicio-2 --nivel-8               Apresenta o segundo exercício prático do Nível 8.
  --na-pratica-exercicio-2 --nivel-8 --resolucao   Apresenta a resolução do segundo exercício prático do Nível 8.
  --na-pratica-exercicio-3 --nivel-8               Apresenta o terceiro exercício prático do Nível 8.
  --na-pratica-exercicio-3 --nivel-8 --resolucao   Apresenta a resolução do terceiro exercício prático do Nível 8.
  --na-pratica-exercicio-4 --nivel-8               Apresenta o quarto exercício prático do Nível 8.
  --na-pratica-exercicio-4 --nivel-8 --resolucao   Apresenta a resolução do quarto exercício prático do Nível 8.
  --na-pratica-exercicio-5 --nivel-8               Apresenta o quinto exercício prático do Nível 8.
  --na-pratica-exercicio-5 --nivel-8 --resolucao   Apresenta a resolução do quinto exercício prático do Nível 8.

Capítulo 18: Concorrência

  --concorrencia-vs-paralelismo     Apresenta a diferença entre concorrência e paralelismo.
  --goroutines-waitgroups           Apresenta o uso de goroutines e waitgroups.
  --discussao-condicao-de-corrida   Apresenta uma discussão sobre condição de corrida.
  --condicao-de-corrida             Apresenta o conceito de condição de corrida.
  --mutex                           Apresenta o uso de mutex.
  --atomic                          Apresenta o uso de atomic.

Capítulo 19: Seu Ambiente de Desenvolvimento

  --o-terminal                           Exibe informações sobre o terminal.
  --go-workspace-environment-variables   Exibe informações sobre o workspace e variáveis de ambiente do Go.
  --ides                                 Exibe informações sobre IDEs.
  --comandos-go                          Exibe informações sobre comandos go.
  --repositorios-no-github               Exibe informações sobre repositórios no github.
  --explorando-o-github                  Exibe informações sobre explorando o github.
  --compilacao-cruzada                   Exibe informações sobre compilação cruzada.
  --pacotes                              Exibe informações sobre pacotes.

Capítulo 20: Exercícios Ninja Nível 9

  --na-pratica-exercicio-1 --nivel-9               Exibe o Exercício 1 do capítulo 20
  --na-pratica-exercicio-1 --nivel-9 --resolucao   Exibe a resolução do Exercício 1 do capítulo 20
  --na-pratica-exercicio-2 --nivel-9               Exibe o Exercício 2 do capítulo 20
  --na-pratica-exercicio-2 --nivel-9 --resolucao   Exibe a resolução do Exercício 2 do capítulo 20
  --na-pratica-exercicio-3 --nivel-9               Exibe o Exercício 3 do capítulo 20
  --na-pratica-exercicio-3 --nivel-9 --resolucao   Exibe a resolução do Exercício 3 do capítulo 20
  --na-pratica-exercicio-4 --nivel-9               Exibe o Exercício 4 do capítulo 20
  --na-pratica-exercicio-4 --nivel-9 --resolucao   Exibe a resolução do Exercício 4 do capítulo 20
  --na-pratica-exercicio-5 --nivel-9               Exibe o Exercício 5 do capítulo 20
  --na-pratica-exercicio-5 --nivel-9 --resolucao   Exibe a resolução do Exercício 5 do capítulo 20
  --na-pratica-exercicio-6 --nivel-9               Exibe o Exercício 6 do capítulo 20
  --na-pratica-exercicio-6 --nivel-9 --resolucao   Exibe a resolução do Exercício 6 do capítulo 20
  --na-pratica-exercicio-7 --nivel-9               Exibe o Exercício 7 do capítulo 20
  --na-pratica-exercicio-7 --nivel-9 --resolucao   Exibe a resolução do Exercício 7 do capítulo 20

Capítulo 21: Canais

  --entendendo-canais                      Entendendo Canais
  --canais-direcionais-utilizando-canais   Canais direcionais & utilizando canais
  --range-e-close                          Range e Close
  --select                                 Select
  --a-expressao-comma-ok                   A expressão comma ok
  --convergencia                           Convergência
  --convergencia --example                 Convergência - Exemplo
  --convergencia --example --chan-string   Convergência de Strings - Exemplo
  --divergencia                            Divergência
  --divergencia --example                  Divergência - Exemplo
  --divergencia --example --with-func      Divergência - Exemplo com Função
  --context                                Context


Capítulo 22: Exercícios Ninja Nível 10

  --na-pratica-exercicio-1 --nivel-10               Exibe a descrição do Exercício #1
  --na-pratica-exercicio-1 --nivel-10 --resolucao   Exibe a resolução do Exercício #1
  --na-pratica-exercicio-2 --nivel-10               Exibe a descrição do Exercício #2
  --na-pratica-exercicio-2 --nivel-10 --resolucao   Exibe a resolução do Exercício #2
  --na-pratica-exercicio-3 --nivel-10               Exibe a descrição do Exercício #3
  --na-pratica-exercicio-3 --nivel-10 --resolucao   Exibe a resolução do Exercício #3
  --na-pratica-exercicio-4 --nivel-10               Exibe a descrição do Exercício #4
  --na-pratica-exercicio-4 --nivel-10 --resolucao   Exibe a resolução do Exercício #4
  --na-pratica-exercicio-5 --nivel-10               Exibe a descrição do Exercício #5
  --na-pratica-exercicio-5 --nivel-10 --resolucao   Exibe a resolução do Exercício #5
  --na-pratica-exercicio-6 --nivel-10               Exibe a descrição do Exercício #6
  --na-pratica-exercicio-6 --nivel-10 --resolucao   Exibe a resolução do Exercício #6
  --na-pratica-exercicio-7 --nivel-10               Exibe a descrição do Exercício #7
  --na-pratica-exercicio-7 --nivel-10 --resolucao   Exibe a resolução do Exercício #7

Capítulo 23: Tratamento de Erro

  --entendendo-erro                    Entendendo erros
  --verificando-erros                  Verificando erros
  --print-log                          Print & log
  --recover                            Recover
  --erros-com-informacoes-adicionais   Erros com informações adicionais

Capítulo 24: Exercicios Ninja Nível 11

  --na-pratica-exercicio-1 --nivel-11               Apresenta o primeiro exercício prático do curso.
  --na-pratica-exercicio-1 --nivel-11 --resolucao   Exibe a resolução do primeiro exercício prático.
  --na-pratica-exercicio-2 --nivel-11               Apresenta o segundo exercício prático do curso.
  --na-pratica-exercicio-2 --nivel-11 --resolucao   Exibe a resolução do segundo exercício prático.
  --na-pratica-exercicio-3 --nivel-11               Apresenta o terceiro exercício prático do curso.
  --na-pratica-exercicio-3 --nivel-11 --resolucao   Exibe a resolução do terceiro exercício prático.
  --na-pratica-exercicio-4 --nivel-11               Apresenta o quarto exercício prático do curso.
  --na-pratica-exercicio-4 --nivel-11 --resolucao   Exibe a resolução do quarto exercício prático.
  --na-pratica-exercicio-5 --nivel-11               Apresenta o quinto exercício prático do curso.
  --na-pratica-exercicio-5 --nivel-11 --resolucao   Exibe a resolução do quinto exercício prático.

Capítulo 25: Documentação
  --introducao                Introdução
  --go-doc                    go doc
  --godoc                     godoc
  --pkg-go-dev                https://pkg.go.dev/
  --escrevendo-documentacao   Escrevendo documentação

Capítulo 26: Exercicios Ninja Nível 12

  --na-pratica-exercicio-1 --nivel-12               Apresenta o primeiro exercício prático do curso.
  --na-pratica-exercicio-1 --nivel-12 --resolucao   Exibe a resolução do primeiro exercício prático.
  --na-pratica-exercicio-2 --nivel-12               Apresenta o segundo exercício prático do curso.
  --na-pratica-exercicio-2 --nivel-12 --resolucao   Exibe a resolução do segundo exercício prático.
  --na-pratica-exercicio-3 --nivel-12               Apresenta o terceiro exercício prático do curso.
  --na-pratica-exercicio-3 --nivel-12 --resolucao   Exibe a resolução do terceiro exercício prático.

Capítulo 27: Teste e Benchmarking

  --introducao            Introdução
  --testes-em-tabelas     Testes em tabelas
  --testes-como-exemplo   Testes como exemplo
  --go-fmt-govet-golint   go fmt, govet e golint
  --benchmark             Benchmark
  --cobertura             Cobertura

Estrutura do Projeto

.
├── LICENSE
├── README.md
├── build
│   ├── Dockerfile.dev
│   └── Dockerfile.prod
├── cmd
│   └── aprendago
│       └── main.go
├── configs
│   └── _env
├── docker-compose.yml
├── docs
│   └── questionarie.md
├── go.mod
├── go.sum
├── help.out
├── internal
│   ├── agrupamento_de_dados
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── aplicacoes
│   │   ├── examples.go
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── canais
│   │   ├── examples.go
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── chapter
│   │   └── chapter.go
│   ├── concorrencia
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── documentacao
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_1
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_10
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_11
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   ├── resolution_exercises_test.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_12
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_2
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_3
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_4
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_5
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_6
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_7
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_8
│   │   ├── overview.yml
│   │   ├── resolution_exercises.go
│   │   └── topics.go
│   ├── exercicios_ninja_nivel_9
│   │   ├── overview.yml
│   │   ├── resolution_exercise.go
│   │   └── topics.go
│   ├── fluxo_de_controle
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── funcoes
│   │   ├── overview.yml
│   │   ├── resolution_challange.go
│   │   └── topics.go
│   ├── fundamentos_da_programacao
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── menu
│   │   ├── capitulo_options.go
│   │   ├── capitulo_outline.go
│   │   ├── helpme.go
│   │   └── options.go
│   ├── outline.go
│   ├── ponteiros
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── seu_ambiente_de_desenvolvimento
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── structs
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── teste_benchmarking
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── tratamento_de_erro
│   │   ├── overview.yml
│   │   └── topics.go
│   ├── variaveis_valores_tipos
│   │   ├── overview.yml
│   │   └── topics.go
│   └── visao_geral_do_curso
│       ├── overview.yml
│       └── topics.go
├── log
│   └── development.log
├── pkg
│   ├── format
│   │   ├── helpme.go
│   │   ├── menu_options.go
│   │   ├── overview.go
│   │   ├── questionnaire.go
│   │   ├── resolucao_exercicios.go
│   │   └── section.go
│   ├── logger
│   │   └── log.go
│   └── reader
│       └── overview.go
└── tree.log

41 directories, 97 files

Licença

Este projeto é licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter detalhes.