Junior — Middle
Πώς μπορείτε να λάβετε τις τελευταίες δέκα γραμμές ενός αρχείου καταγραφής;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, για να λάβετε τις τελευταίες δέκα γραμμές ενός αρχείου καταγραφής, μπορείτε να διαβάσετε το αρχείο γραμμή προς γραμμή και να αποθηκεύσετε τις τελευταίες 10 γραμμές σε έναν κυκλικό buffer (π.χ., ένα slice σταθερού μεγέθους). Αυτό είναι αποδοτικό στη μνήμη και δεν απαιτεί φόρτωση ολόκληρου του αρχείου.
Παράδειγμα:
package main
import (
"bufio"
"fmt"
"os"
)
func tail(filename string, n int) ([]string, error) {
file, err := os.Open(filename)
if err != nil {
return nil, err
}
defer file.Close()
lines := make([]string, 0, n)
scanner := bufio.NewScanner(file)
for scanner.Scan() {
if len(lines) == n {
lines = lines[1:]
}
lines = append(lines, scanner.Text())
}
if err := scanner.Err(); err != nil {
return nil, err
}
return lines, nil
}
func main() {
lines, err := tail("logfile.log", 10)
if err != nil {
fmt.Println("Σφάλμα:", err)
return
}
for _, line := range lines {
fmt.Println(line)
}
}
Αυτός ο κώδικας διαβάζει το αρχείο γραμμή προς γραμμή, αποθηκεύοντας μόνο τις τελευταίες 10 γραμμές.