تمرين إعادة البناء
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)
}اكتب هنا