Sobes.tech
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.