Golang

[GoLang 시작하기 8] map을 활용한 Dictionary

여니여니_ 2020. 3. 28. 13:45

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package main
 
import (
    "fmt"
 
)
 
func main() {
    dictioinary := myDict.Dictionary{}
 
    baseword := "Hello :D"
 
    //딕셔너리에 단어 추가하기
    dictioinary.Add("First", baseword)
    dictioinary.Add("Second""Bye :(")
 
    //Second를 키로하는 단어 찾기
    word, _ := dictioinary.Search("Second")
    fmt.Println(word) // Bye :(
 
    //삭제하기
    dictioinary.Delete("First")
    word, err := dictioinary.Search("First")
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(word)
    }
 
}
 
 

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package myDict
 
import "errors"
 
//Dictionary type
type Dictionary map[string]string
 
var (
    errNotFound   = errors.New("Not Found")
    errWordExists = errors.New("That Word already Exists")
    errCantUpdate = errors.New("Cant Update non-existing 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 dict
func (d Dictionary) Add(word string, 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)
}
 
 

 

 

(결과)