master
 1package main
 2
 3type Dictionary map[string]string
 4type DictionaryError string
 5
 6var (
 7	ErrorNotFound         = DictionaryError("could not find the word you were looking for")
 8	ErrorWordDoesNotExist = DictionaryError("cannot update word because it does not exist")
 9	ErrorWordExists       = DictionaryError("cannot add word because it already exists")
10)
11
12func (e DictionaryError) Error() string {
13	return string(e)
14}
15
16func (d Dictionary) Search(word string) (string, error) {
17	definition, ok := d[word]
18	if !ok {
19		return "", ErrorNotFound
20	}
21
22	return definition, nil
23}
24
25func (d Dictionary) Add(word, definition string) error {
26	_, err := d.Search(word)
27
28	switch err {
29	case ErrorNotFound:
30		d[word] = definition
31		return nil
32	case nil:
33		return ErrorWordExists
34	default:
35		return err
36	}
37}
38
39func (d Dictionary) Update(word, definition string) error {
40	_, err := d.Search(word)
41
42	switch err {
43	case ErrorNotFound:
44		return ErrorWordDoesNotExist
45	case nil:
46		d[word] = definition
47		return nil
48	default:
49		return err
50	}
51}
52
53func (d Dictionary) Delete(word string) {
54	delete(d, word)
55}