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}