Junior — Middle
Kaip gauti paskutines dešimt eilutes iš žurnalo failo?
sobes.tech AI
Atsakymas iš AI
Go kalboje, norint gauti paskutines dešimt eilutės iš žurnalo failo, galite skaityti failą eilutė po eilutės ir paskutines 10 eilutės saugoti cikliniame buferyje (pavyzdžiui, fiksuoto dydžio skiltyje). Tai yra efektyvu atminties požiūriu ir nereikalauja įkelti viso failo.
Pavyzdys:
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("Klaida:", err)
return
}
for _, line := range lines {
fmt.Println(line)
}
}
Šis kodas skaito failą eilutė po eilutės ir saugo tik paskutines 10 eilutės.