AzLearn

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

File Line Counter

أعد كتابة برنامج Go يعد أسطر ملف نصي.

go ~14 دقيقة مبتدئ
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
package main

import (
	"bufio"
	"fmt"
	"os"
)

func countLines(path string) (int, error) {
	file, err := os.Open(path)
	if err != nil {
		return 0, err
	}
	defer file.Close()

	lines := 0
	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		lines++
	}

	return lines, scanner.Err()
}

func main() {
	path := "sample-lines.txt"
	if len(os.Args) > 1 {
		path = os.Args[1]
	} else {
		err := os.WriteFile(path, []byte("first\nsecond\nthird\n"), 0o644)
		if err != nil {
			fmt.Println("error:", err)
			return
		}
		defer os.Remove(path)
	}

	lines, err := countLines(path)
	if err != nil {
		fmt.Println("error:", err)
		return
	}

	fmt.Printf("%s has %d lines\n", path, lines)
}
اكتب هنا