Junior — Middle
Ինչպե՞ս կարելի է ստանալ լոգ ֆայլի վերջին տաս տողերը:
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, որպեսզի ստանաք վերջին տասը տողը լոգ ֆայլից, կարող եք ֆայլը կարդալ տող առ տող և վերջին 10 տողերը պահել շրջանաձև բաքում (օրինակ՝ ֆիքսված չափի սլայսում): Սա արդյունավետ է հիշողության համար և չի պահանջում ամբողջ ֆայլի բեռնումը:
Օրինակ՝
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 տողերը։