package members import "sync" type Member struct { Nickname string Token string } type Database struct { members map[string]Member membersLock sync.RWMutex } func (d *Database) AddMember(member Member) { // TODO: validate member! d.membersLock.Lock() d.members[member.Token] = member d.membersLock.Unlock() } func (d *Database) GetMember(token string) (Member, bool) { d.membersLock.RLock() defer d.membersLock.RUnlock() member, ok := d.members[token] return member, ok } func NewDatabase() *Database { return &Database{ members: map[string]Member{}, } }