Pacotes os e filepath
Variáveis de ambiente, caminhos e interação com o sistema operacional
Pacotes os e filepath é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
os.Args — Argumentos da linha de comando
os.Args contém os argumentos da linha de comando. os.Args[0] é o nome do programa:
package main
import ("fmt"; "os")
func main() {
fmt.Println("Program:", os.Args[0])
if len(os.Args) < 2 {
fmt.Println("Usage: program <name>")
os.Exit(1)
}
fmt.Printf("Hello, %s!\n", os.Args[1])
}os.Getenv e os.Setenv
Leia e defina variáveis de ambiente:
package main
import ("fmt"; "os")
func main() {
// Read env var (returns "" if not set)
home := os.Getenv("HOME")
fmt.Println("HOME:", home)
// Set env var
os.Setenv("APP_ENV", "production")
fmt.Println(os.Getenv("APP_ENV")) // production
// Get with default pattern:
port := os.Getenv("PORT")
if port == "" { port = "8080" }
fmt.Println("Port:", port)
}os.Exit — Encerrando o programa
os.Exit encerra o programa com um código de status. Exit 0 = sucesso; diferente de zero = erro. Funções adiadas NOT são executadas:
package main
import ("fmt"; "os")
func main() {
config := os.Getenv("CONFIG_PATH")
if config == "" {
fmt.Fprintln(os.Stderr, "error: CONFIG_PATH not set")
os.Exit(1) // signals error to the shell
}
fmt.Println("config:", config)
}os.Open, os.Create, os.ReadFile
Operações de arquivo com o pacote os:
package main
import ("fmt"; "os")
func main() {
// Read entire file
data, err := os.ReadFile("/etc/hostname")
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("hostname: %s", data)
// Write file (overwrites if exists)
err = os.WriteFile("/tmp/test.txt", []byte("hello\n"), 0644)
fmt.Println("write err:", err)
}os.Stat — Informações do arquivo
os.Stat retorna informações sobre um arquivo ou diretório:
package main
import ("fmt"; "os")
func main() {
info, err := os.Stat("/tmp")
if err != nil {
if os.IsNotExist(err) {
fmt.Println("does not exist")
}
return
}
fmt.Println(info.Name()) // tmp
fmt.Println(info.IsDir()) // true
fmt.Println(info.Size()) // size in bytes
fmt.Println(info.Mode()) // file permissions
fmt.Println(info.ModTime()) // last modified time
}os.MkdirAll e os.RemoveAll
Crie e remova árvores de diretórios:
package main
import ("fmt"; "os")
func main() {
// Create nested directories
err := os.MkdirAll("/tmp/myapp/data/logs", 0755)
fmt.Println("mkdir:", err)
// Remove a file
err = os.Remove("/tmp/test.txt")
fmt.Println("remove:", err)
// Remove directory and all contents
err = os.RemoveAll("/tmp/myapp")
fmt.Println("removeAll:", err)
}path/filepath: Caminhos multiplataforma
path/filepath gerencia caminhos de arquivo usando o separador de caminhos do OS (/ no Unix, \ no Windows):
package main
import ("fmt"; "path/filepath")
func main() {
// Join path components correctly
p := filepath.Join("/home", "user", "docs", "file.txt")
fmt.Println(p) // /home/user/docs/file.txt
// Split path and file
dir, file := filepath.Split(p)
fmt.Println(dir, file) // /home/user/docs/ file.txt
// Extension
fmt.Println(filepath.Ext(p)) // .txt
// Base name
fmt.Println(filepath.Base(p)) // file.txt
}filepath.Walk — Percorrendo diretórios
Percorra uma árvore de diretórios visitando cada arquivo e diretório:
package main
import ("fmt"; "os"; "path/filepath")
func main() {
err := filepath.Walk("/tmp", func(path string, info os.FileInfo, err error) error {
if err != nil { return err }
if info.IsDir() {
fmt.Println("[DIR]", path)
} else {
fmt.Printf("[FILE] %s (%d bytes)\n", path, info.Size())
}
return nil
})
if err != nil { fmt.Println("walk error:", err) }
}filepath.Glob — Correspondência de padrões
Encontre arquivos que correspondam a um padrão:
package main
import ("fmt"; "path/filepath")
func main() {
// Find all .go files in current directory
matches, err := filepath.Glob("*.go")
if err != nil {
fmt.Println(err)
return
}
for _, m := range matches {
fmt.Println(m)
}
// Absolute path resolution
abs, _ := filepath.Abs("../myfile.txt")
fmt.Println(abs)
}os.TempDir e os.CreateTemp
Crie arquivos temporários com segurança:
package main
import ("fmt"; "os")
func main() {
// System temp directory
fmt.Println(os.TempDir()) // /tmp
// Create a unique temp file
f, err := os.CreateTemp("", "myapp-*.json")
if err != nil {
fmt.Println(err)
return
}
defer os.Remove(f.Name()) // clean up
defer f.Close()
fmt.Println("temp file:", f.Name())
_, _ = f.WriteString(`{"status":"ok"}`)
}Verificação rápida
Qual função combina corretamente os componentes de um caminho de arquivo de forma multiplataforma?
Revisão: os e filepath
Resumo:
os.Args— argumentos de comando;os.Getenv/Setenv— ambienteos.ReadFile/WriteFilepara entrada e saída de arquivos simplesos.Stat— informações do arquivo;os.IsNotExist(err)para arquivos ausentesos.MkdirAll/RemoveAllpara gerenciamento de diretóriosfilepath.Join/Split/Ext/Basepara caminhos multiplataformafilepath.Walkpara percorrer árvores de diretórios
Perguntas Frequentes
A aula “Pacotes os e filepath” é grátis?
Sim — o texto completo de “Pacotes os e filepath” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Pacotes os e filepath”?
Variáveis de ambiente, caminhos e interação com o sistema operacional Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Pacotes os e filepath”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Pacotes fmt e strings
- strconv, math e sort
- Fundamentos do pacote time
- Pacotes os e filepath