Go - 03. Dictionary project
Dictionary project
package mydict
import "errors"
// Dictionary type
type Dictionary map[string]string
var (
errNotFound = errors.New("Not Found")
errCantUpdate = errors.New("Cant update non-existing word")
errWordExists = errors.New("That word already exists")
)
// Search for a word
func (d Dictionary) Search(word string) (string, error) {
value, exists := d[word]
if exists {
return value, nil
}
return "", errNotFound
}
// Add a word to the dictionary
func (d Dictionary) Add(word, def string) error {
_, err := d.Search(word)
switch err {
case errNotFound:
d[word] = def
case nil:
return errWordExists
}
return nil
}
// Update a word
func (d Dictionary) Update(word, definition string) error {
_, err := d.Search(word)
switch err {
case nil:
d[word] = definition
case errNotFound:
return errCantUpdate
}
return nil
}
// Delete a word
func (d Dictionary) Delete(word string) {
delete(d, word)
}
package main
import (
"fmt"
"github.com/y00913/learngo/mydict"
)
func main() {
dictionary := mydict.Dictionary{"first": "First word"}
baseWord := "hello"
dictionary.Add(baseWord, "First")
dictionary.Search(baseWord)
dictionary.Delete(baseWord)
word, err := dictionary.Search(baseWord)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(word)
}
}