package chat import "time" type Logs struct { entries [20]LogEntry start int } func (l *Logs) Append(le LogEntry) { l.entries[l.start] = le l.start++ if l.start == len(l.entries) { l.start = 0 } } func (l *Logs) Get() []LogEntry { result := make([]LogEntry, 0, len(l.entries)) for i := l.start; i < len(l.entries); i++ { result = append(result, l.entries[i]) } for i := 0; i < l.start; i++ { result = append(result, l.entries[i]) } return result } type LogEntry struct { Username string Time time.Time Message string Type LogEntryType } type LogEntryType int const ( TypeNone LogEntryType = iota TypeJoined TypeLeft TypeMessage )