50/100 Dias de Golang - Metade de 100
Table of Contents
#
Metade de 100
Esse é o post 51 - o blog é de programação, o primeiro tinha que ser de índice 0. Vou fazer um agrupado de todos os posts seguindo a sequência do roadmap.sh - Sim, no dia 100 vou fazer isso novamente com todos os posts…rsrs. No final mostro o código Go que usei para pegar o nome e o path de cada arquivo.
#
Learn the Basics
- 0/100 Dias de Golang - Início
- 1/100 Dias de Golang - Tipos Básicos
- 2/100 Dias de Golang - Tipos Compostos - Arrays
- 3/100 Dias de Golang - Tipos Compostos - Slices
- 4/100 Dias de Golang - Tipos Compostos - Maps
- 5/100 Dias de Golang - Tipos Compostos - Structs
- 6/100 Dias de Golang - If, For, Switch e GoTo
- 7/100 Dias de Golang - Prática
- 8/100 Dias de Golang - Funções
- 9/100 Dias de Golang - Structs 2
- 12/100 Dias de Golang - Pacotes e Módulos
- 22/100 Dias de Golang - Biblioteca “time”
- 33/100 Dias de Golang - make()
- 35/100 Dias de Golang - Error Handling
- 37/100 Dias de Golang - Strings
#
Going Deeper
- 10/100 Dias de Golang - Interfaces
- 11/100 Dias de Golang - Ponteiros
- 13/100 Dias de Golang - Generics
- 17/100 Dias de Golang - Concorrência e Goroutines
- 18/100 Dias de Golang - Goroutines, WaitGroup, Race condition e Mutex
- 19/100 Dias de Golang - Channels
- 20/100 Dias de Golang - Exemplo de goroutines, mutex e channels
- 21/100 Dias de Golang - JSON
- 23/100 Dias de Golang - Manipulação de arquivos
- 24/100 Dias de Golang - Continuação sobre a biblioteca “time”
- 34/100 Dias de Golang - Como o Runtime do Golang Gerencia Goroutines
- 36/100 Dias de Golang - Select Goroutines
#
CLI’s
#
ORM’s
#
Web Frameworks
- 42/100 Dias de Golang - Webservers em Go com a Biblioteca Padrão
- 43/100 Dias de Golang - Webservers com Gin
#
Logging
#
API Clients
- 14/100 Dias de Golang - Requests para APIs Externas - Parte 1
- 15/100 Dias de Golang - Requests para APIs Externas - Parte 2
- 16/100 Dias de Golang - Requests para APIs Externas - Parte 3
#
Testing your Apps
- 25/100 Dias de Golang - Testes em Golang
- 26/100 Dias de Golang - Testes em batch, AAA e Cobertura de Código
- 27/100 Dias de Golang - Testes de benchmark
- 28/100 Dias de Golang - Testes em Go com Fuzzing
- 29/100 Dias de Golang - Testes com Testify
- 30/100 Dias de Golang - Testes - Exemplo Prático
#
Perdidos
- 32/100 Dias de Golang - Caminhos para estudar Golang
- 41/100 Dias de Golang - Gerenciando Configurações
- 44/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 1
- 45/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 2
- 46/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 3
- 47/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 4
- 48/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 5
- 49/100 Dias de Golang - Aplicação para buscar previsão do tempo - Parte 6
- 50/100 Dias de Golang - Metade de 100
Para fazer esse Post, abri cada arquivo, peguei o título, formatei para o link em .md - Fiz isso até o post 3, depois disso automatizei.
package main
import (
"bufio"
"fmt"
"os"
"path/filepath"
"strings"
)
func main() {
dir := "/home/victorstein/victorstein.dev/content/posts/golang"
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
file, err := os.Open(path)
if err != nil {
fmt.Printf("Erro ao abrir %s: %v\n", path, err)
return nil
}
defer file.Close()
scanner := bufio.NewScanner(file)
lineCount := 0
var title string
for scanner.Scan() {
lineCount++
if lineCount == 2 {
line := scanner.Text()
if strings.HasPrefix(line, "title:") {
title = strings.TrimSpace(strings.TrimPrefix(line, "title:"))
}
break
}
}
if title != "" {
filename := filepath.Base(path)
fmt.Printf("[%s](./%s)\n", title, filename)
}
return nil
})
if err != nil {
fmt.Printf("Erro ao percorrer diretório: %v\n", err)
}
}