تمرين إعادة البناء
Directory Listing
أعد كتابة برنامج Go يعرض ملفات مجلد وحجومها.
go
~18 دقيقة
متوسط
أعد بناء الكود
Rebuild
هذا هو الكود. اكتبه بنفسك.
الكود المرجعي
package main
import (
"fmt"
"os"
"path/filepath"
"sort"
)
func listFiles(dir string) ([]string, error) {
entries, err := os.ReadDir(dir)
if err != nil {
return nil, err
}
var lines []string
for _, entry := range entries {
info, err := entry.Info()
if err != nil {
return nil, err
}
lines = append(lines, fmt.Sprintf("%-12s %6d bytes", entry.Name(), info.Size()))
}
sort.Strings(lines)
return lines, nil
}
func main() {
dir, err := os.MkdirTemp("", "go-rebuild-files-*")
if err != nil {
fmt.Println("error:", err)
return
}
defer os.RemoveAll(dir)
files := map[string]string{
"notes.txt": "remember to run gofmt\n",
"data.csv": "name,score\nAmina,9\n",
}
for name, body := range files {
path := filepath.Join(dir, name)
if err := os.WriteFile(path, []byte(body), 0o644); err != nil {
fmt.Println("error:", err)
return
}
}
lines, err := listFiles(dir)
if err != nil {
fmt.Println("error:", err)
return
}
for _, line := range lines {
fmt.Println(line)
}
}اكتب هنا