Skip to content

Commit 6624778

Browse files
Merge pull request #63 from fabianoflorentino/development
Development to Main
2 parents 7b59c73 + bd137ab commit 6624778

File tree

15 files changed

+240
-4
lines changed

15 files changed

+240
-4
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ module github.com/fabianoflorentino/aprendago
22

33
go 1.23
44

5-
require gopkg.in/yaml.v2 v2.4.0
5+
require gopkg.in/yaml.v3 v3.0.1

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+
22
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
33
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
44
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
5+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
6+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

internal/chapter/chapter.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ import (
1010
"github.com/fabianoflorentino/aprendago/internal/aplicacoes"
1111
"github.com/fabianoflorentino/aprendago/internal/canais"
1212
"github.com/fabianoflorentino/aprendago/internal/concorrencia"
13+
"github.com/fabianoflorentino/aprendago/internal/documentacao"
1314
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_1"
1415
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_10"
1516
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_11"
17+
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_12"
1618
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_2"
1719
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_3"
1820
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_4"
@@ -62,5 +64,7 @@ func New() []func() {
6264
exercicios_ninja_nivel_10.ExerciciosNinjaNivel10,
6365
tratamento_de_erro.TratamentoDeErro,
6466
exercicios_ninja_nivel_11.ExerciciosNinjaNivel11,
67+
documentacao.Documentacao,
68+
exercicios_ninja_nivel_12.ExerciciosNinjaNivel12,
6569
}
6670
}

internal/documentacao/overview.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
description:
3+
name: "Capítulo 25: Documentação"
4+
sections:
5+
- title: "Introdução"
6+
text: |
7+
- Antes de escrever documentação, vamos ver como lê-la. Temos algumas possibilidades:
8+
- golang.org → documentação da standard library
9+
- godoc.org → documentação da standard library e outros
10+
- go doc → comando para ler documentação na linha de comando
11+
- godoc → idem acima, para pode-se servir a documentação local via http
12+
13+
- title: go doc
14+
text: |
15+
- go help doc
16+
- go doc demonstra a documentação de um package, const, func, type, var, método, etc.
17+
- go doc aceita zero, um, ou dois argumentos:
18+
- zero: demonstra a documentação do package do diretório atual
19+
- um: toma argumentos nos padrões abaixo
20+
- go doc <pkg>
21+
- go doc <sym>[.<method>]
22+
- go doc [<pkg>.]<sym>[.<method>]
23+
- go doc [<pkg>.][<sym>.]<method>
24+
- dois: o primeiro argumento deve ser o nome do package
25+
- go doc <pkg> <sym>[.<method>]
26+
27+
- title: godoc
28+
text: |
29+
- godoc extrai e gera documentação de programas em Go. Funciona de duas maneiras:
30+
- Sem o flag http é um comando normal, mostra a documentação no stdout e é isso aí. Pode conter o flag src, que mostra o código fonte.
31+
- Com o flag http roda um servidor web local e mostra a documentação como página web.
32+
- Exemplo: godoc -http=:8080 → http://localhost:8080/
33+
34+
- title: https://pkg.go.dev/
35+
text: |
36+
- Documentação da standard library e outros
37+
- Como colocar a documentação do seu package no godoc.org
38+
- refresh, delete
39+
40+
- title: Escrevendo documentação
41+
text: |
42+
- Documentação é uma parte extremamente importante de fazer com que software seja acessível e sustentável.
43+
- Documentação deve ser bem escrita e correta, mas tambem fácil de escrever e manter.
44+
- Deve ser acoplada com o código e evoluir junto com este. Quanto mais fácil for para os programadores criarem boa documentação... melhor fica pra todos os envolvidos.
45+
- godoc:
46+
- Analisa código fonte em Go, incluindo comentários, e gera documentação em HTML ou texto
47+
- O resultado é uma documentação firmemente atrelada ao código que documenta.
48+
- Por exemplo, na interface web de godoc pode-se navegar da documentação à implementação de um código com apenas um clique.
49+
- https://blog.golang.org/godoc-documenting-go-code
50+
- Na prática:
51+
- Para documentar um tipo, uma variável, uma constante, ou um pacote, escreva um comentário imediatamente antes de sua declaração, sem linhas em branco
52+
- Comece a frase com o nome do elemento. No caso de pacotes, a primeira linha aparece no "package list."
53+
- Caso esteja escrevendo bastante documentação, utilize um arquivo doc.go. Exemplo: package fmt.
54+
- A melhor parte dessa abordagem minimalista é que é super fácil de usar. Como resultado, muita coisa em Go, incluindo toda a standard library, já segue estas convenções.
55+
- Outro exemplo: errors package.
56+
- Código: https://github.com/ellenkorbes/aprendago/tree/master/c%C3%B3digo/25_escrevendo-documentacao

internal/documentacao/topics.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package documentacao
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/fabianoflorentino/aprendago/pkg/format"
7+
)
8+
9+
const (
10+
rootDir = "internal/documentacao"
11+
)
12+
13+
func Documentacao() {
14+
fmt.Printf("\n\nCapítulo 25: Documentação\n")
15+
16+
executeSections("Introdução")
17+
executeSections("go doc")
18+
executeSections("godoc")
19+
executeSections("https://pkg.go.dev/")
20+
executeSections("Escrevendo documentação")
21+
}
22+
23+
func MenuDocumentacao([]string) []format.MenuOptions {
24+
return []format.MenuOptions{
25+
{Options: "--introducao", ExecFunc: func() { executeSections("Introdução") }},
26+
{Options: "--go-doc", ExecFunc: func() { executeSections("go doc") }},
27+
{Options: "--godoc", ExecFunc: func() { executeSections("godoc") }},
28+
{Options: "--pkg-go-dev", ExecFunc: func() { executeSections("https://pkg.go.dev/") }},
29+
{Options: "--escrevendo-documentacao", ExecFunc: func() { executeSections("Escrevendo documentação") }},
30+
}
31+
}
32+
33+
func HelpMeDocumentacao() {
34+
hlp := []format.HelpMe{
35+
{Flag: "--introducao", Description: "Introdução"},
36+
{Flag: "--go-doc", Description: "go doc"},
37+
{Flag: "--godoc", Description: "godoc"},
38+
{Flag: "--pkg-go-dev", Description: "https://pkg.go.dev/"},
39+
{Flag: "--escrevendo-documentacao", Description: "Escrevendo documentação"},
40+
}
41+
42+
fmt.Printf("\nCapítulo 25: Documentação")
43+
format.PrintHelpMe(hlp)
44+
}
45+
46+
func executeSections(section string) {
47+
format.FormatSection(rootDir, section)
48+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
description:
3+
name: "Capítulo 26: Exercícios ninja nível 12"
4+
sections:
5+
- title: "Na prática: Exercício #1"
6+
text: |
7+
- Crie um package "cachorro".
8+
- Este package deverá exportar uma função Idade, que toma como parâmetro um número de anos e retorna a idade equivalente em anos caninos. (1 ano humano → 7 anos caninos)
9+
- Documente seu código com comentários, e utilize a função Idade na sua função main.
10+
- Rode seu programa para verificar se ele funciona.
11+
- Rode um local server com godoc e leia sua documentação.
12+
- Solução: https://github.com/ellenkorbes/aprendago/tree/master/c%C3%B3digo/26_exercicios-ninja-12/01_cachorro
13+
14+
- title: "Na prática: Exercício #2"
15+
text: |
16+
- Coloque seu código no GitHub.
17+
- Faça sua documentação aparecer em godoc.org, e tire um screenshot.
18+
- Delete seu código do GitHub.
19+
- Faça um refresh em godoc.org e veja se seu código sumiu.
20+
- Compartilhe seu exercício aqui: https://github.com/ellenkorbes/aprendago/issues/79
21+
22+
- title: "Na prática: Exercício #3"
23+
text: |
24+
- Use godoc na linha de comando para ver a documentação sobre:
25+
- fmt
26+
- fmt Print
27+
- strings
28+
- strconv
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package exercicios_ninja_nivel_12
2+
3+
import "fmt"
4+
5+
// ResolucaoNaPraticaExercicio1 calculates and prints the age of a dog in dog years
6+
// based on a given human age. The age is hardcoded as 3 years in this example.
7+
func ResolucaoNaPraticaExercicio1() {
8+
idade := 3
9+
idadeCachorro := idadeDeCachorro(idade)
10+
11+
fmt.Printf("A idade do cachorro em anos humanos é: %d", idadeCachorro)
12+
}
13+
14+
func ResolucaoNaPraticaExercicio2() {
15+
fmt.Printf("Não há resolução para este exercício.")
16+
}
17+
18+
func ResolucaoNaPraticaExercicio3() {
19+
fmt.Printf("Não há resolução para este exercício.")
20+
}
21+
22+
// idadeDeCachorro converts a dog's age from human years to dog years.
23+
// It takes an integer representing the dog's age in human years and returns
24+
// the equivalent age in dog years, calculated by multiplying the input by 7.
25+
func idadeDeCachorro(idade int) int {
26+
return idade * 7
27+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package exercicios_ninja_nivel_12
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/fabianoflorentino/aprendago/pkg/format"
7+
)
8+
9+
// rootDir represents the relative path to the directory containing
10+
// the exercises for level 11 of the ninja training program.
11+
const (
12+
rootDir = "internal/exercicios_ninja_nivel_12"
13+
)
14+
15+
func ExerciciosNinjaNivel12() {
16+
fmt.Printf("\n\nCapítulo 26: Exercicios: Ninja Nível 12\n")
17+
18+
executeSection("Na prática: Exercício #1")
19+
executeSection("Na prática: Exercício #2")
20+
executeSection("Na prática: Exercício #3")
21+
}
22+
23+
func MenuExerciciosNinjaNivel12([]string) []format.MenuOptions {
24+
return []format.MenuOptions{
25+
{Options: "--na-pratica-exercicio-1 --nivel-12", ExecFunc: func() { executeSection("Na prática: Exercício #1") }},
26+
{Options: "--na-pratica-exercicio-1 --nivel-12 --resolucao", ExecFunc: func() { ResolucaoNaPraticaExercicio1() }},
27+
{Options: "--na-pratica-exercicio-2 --nivel-12", ExecFunc: func() { executeSection("Na prática: Exercício #2") }},
28+
{Options: "--na-pratica-exercicio-2 --nivel-12 --resolucao", ExecFunc: func() { ResolucaoNaPraticaExercicio2() }},
29+
{Options: "--na-pratica-exercicio-3 --nivel-12", ExecFunc: func() { executeSection("Na prática: Exercício #3") }},
30+
{Options: "--na-pratica-exercicio-3 --nivel-12 --resolucao", ExecFunc: func() { ResolucaoNaPraticaExercicio3() }},
31+
}
32+
}
33+
34+
func HelpMeExerciciosNinjaNivel12() {
35+
hlp := []format.HelpMe{
36+
{Flag: "--na-pratica-exercicio-1 --nivel-12", Description: "Apresenta o primeiro exercício prático do curso.", Width: 0},
37+
{Flag: "--na-pratica-exercicio-1 --nivel-12 --resolucao", Description: "Exibe a resolução do primeiro exercício prático.", Width: 0},
38+
{Flag: "--na-pratica-exercicio-2 --nivel-12", Description: "Apresenta o segundo exercício prático do curso.", Width: 0},
39+
{Flag: "--na-pratica-exercicio-2 --nivel-12 --resolucao", Description: "Exibe a resolução do segundo exercício prático.", Width: 0},
40+
{Flag: "--na-pratica-exercicio-3 --nivel-12", Description: "Apresenta o terceiro exercício prático do curso.", Width: 0},
41+
{Flag: "--na-pratica-exercicio-3 --nivel-12 --resolucao", Description: "Exibe a resolução do terceiro exercício prático.", Width: 0},
42+
}
43+
44+
fmt.Printf("\nCapítulo 26: Exercicios Ninja Nível 12\n")
45+
format.PrintHelpMe(hlp)
46+
}
47+
48+
func executeSection(section string) {
49+
format.FormatSection(rootDir, section)
50+
}

internal/menu/capitulo_options.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ import (
99
"github.com/fabianoflorentino/aprendago/internal/aplicacoes"
1010
"github.com/fabianoflorentino/aprendago/internal/canais"
1111
"github.com/fabianoflorentino/aprendago/internal/concorrencia"
12+
"github.com/fabianoflorentino/aprendago/internal/documentacao"
1213
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_1"
1314
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_10"
1415
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_11"
16+
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_12"
1517
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_2"
1618
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_3"
1719
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_4"
@@ -60,6 +62,8 @@ func MenuCapituloOptions([]string) []format.MenuOptions {
6062
{Options: "--cap=22 --topics", ExecFunc: func() { exercicios_ninja_nivel_10.HelpMeExerciciosNinjaNivel10() }},
6163
{Options: "--cap=23 --topics", ExecFunc: func() { tratamento_de_erro.HelpMeTratamentoDeErro() }},
6264
{Options: "--cap=24 --topics", ExecFunc: func() { exercicios_ninja_nivel_11.HelpMeExerciciosNinjaNivel11() }},
65+
{Options: "--cap=25 --topics", ExecFunc: func() { documentacao.HelpMeDocumentacao() }},
66+
{Options: "--cap=26 --topics", ExecFunc: func() { exercicios_ninja_nivel_12.HelpMeExerciciosNinjaNivel12() }},
6367
}
6468
}
6569

@@ -94,6 +98,8 @@ func HelpMeCapituloOptions() {
9498
{Flag: "--cap=22 --topics", Description: "Exercícios Ninja: Nível 10"},
9599
{Flag: "--cap=23 --topics", Description: "Tratamento de Erro"},
96100
{Flag: "--cap=24 --topics", Description: "Exercícios Ninja: Nível 11"},
101+
{Flag: "--cap=25 --topics", Description: "Documentação"},
102+
{Flag: "--cap=26 --topics", Description: "Exercícios Ninja: Nível 12"},
97103
}
98104

99105
fmt.Println("Capítulos do Curso")

internal/menu/capitulo_outline.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ import (
1010
"github.com/fabianoflorentino/aprendago/internal/aplicacoes"
1111
"github.com/fabianoflorentino/aprendago/internal/canais"
1212
"github.com/fabianoflorentino/aprendago/internal/concorrencia"
13+
"github.com/fabianoflorentino/aprendago/internal/documentacao"
1314
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_10"
1415
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_11"
16+
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_12"
1517
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_2"
1618
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_3"
1719
"github.com/fabianoflorentino/aprendago/internal/exercicios_ninja_nivel_4"
@@ -62,6 +64,8 @@ func MenuCapituloOutline([]string) []format.MenuOptions {
6264
{Options: "--cap=22 --overview", ExecFunc: func() { exercicios_ninja_nivel_10.ExerciciosNinjaNivel10() }},
6365
{Options: "--cap=23 --overview", ExecFunc: func() { tratamento_de_erro.TratamentoDeErro() }},
6466
{Options: "--cap=24 --overview", ExecFunc: func() { exercicios_ninja_nivel_11.ExerciciosNinjaNivel11() }},
67+
{Options: "--cap=25 --overview", ExecFunc: func() { documentacao.Documentacao() }},
68+
{Options: "--cap=26 --overview", ExecFunc: func() { exercicios_ninja_nivel_12.ExerciciosNinjaNivel12() }},
6569
}
6670
}
6771

@@ -93,6 +97,9 @@ func HelpMeCapituloOutline() {
9397
{Flag: "--cap=21 --overview", Description: "Canais"},
9498
{Flag: "--cap=22 --overview", Description: "Exercícios Ninja Nível 10"},
9599
{Flag: "--cap=23 --overview", Description: "Tratamento de Erro"},
100+
{Flag: "--cap=24 --overview", Description: "Exercícios Ninja Nível 11"},
101+
{Flag: "--cap=25 --overview", Description: "Documentação"},
102+
{Flag: "--cap=26 --overview", Description: "Exercícios Ninja Nível 12"},
96103
}
97104

98105
fmt.Printf("\nOutline do Curso por Capítulo\n")

0 commit comments

Comments
 (0)