Junior — Middle
Kā iegūt pēdējo desmit rindiņas no žurnāla faila?
sobes.tech AI
Atbilde no AI
Go valodā, lai iegūtu pēdējās desmit rindas no žurnāla faila, jūs varat lasīt failu rindas pēc rindas un pēdējās 10 rindas saglabāt riņķa buferī (piemēram, fiksēta izmēra šķēlē). Tas ir efektīvi atmiņas ziņā un neprasa ielādēt visu failu.
Piemērs:
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("Kļūda:", err)
return
}
for _, line := range lines {
fmt.Println(line)
}
}
Šis kods lasa failu rindiņa pēc rindas un saglabā tikai pēdējās 10 rindas.