AzLearn

تمرين إعادة البناء

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)
	}
}
اكتب هنا