package main import "fmt" type LogBuffer struct { strings []string size int } func NewLogBuffer(size int) *LogBuffer { return &LogBuffer{ strings: make([]string, 0, size), size: size, } } func (l *LogBuffer) Add(s string) { if len(l.strings) == l.size { l.strings = l.strings[1:] } l.strings = append(l.strings, s) } func (l *LogBuffer) Get() []string { return l.strings } func (l *LogBuffer) GetLast() (string, error) { if len(l.strings) == 0 { return "", fmt.Errorf("log buffer is empty") } return l.strings[len(l.strings)-1], nil } func (l *LogBuffer) GetSecondToLast() (string, error) { if len(l.strings) < 2 { return "", fmt.Errorf("log buffer does not have enough lines") } return l.strings[len(l.strings)-2], nil } func (l *LogBuffer) GetLineStepsBack(x int) (string, error) { if x < 0 || x >= len(l.strings) { return "", fmt.Errorf("log buffer does not have enough lines to step back %d times", x) } return l.strings[len(l.strings)-1-x], nil } // //var LogBuf = NewLogBuffer(10)