package mydict
// type of dictionary
type Dictionary map[string]string
map 앞에 Dictionary 라는 alias를 주었다.
package main
import (
"fmt"
"github.com/project/helloworld/mydict"
)
func main() {
dictionary := mydict.Dictionary{}
dictionary["hello"] = "hello"
fmt.Println(dictionary)
}
다음과 같이 사용하면
결과값을 가져올 수 있다.
package mydict
import "errors"
// type of dictionary
type Dictionary map[string]string
var errNotFound = errors.New("not found!")
func (d Dictionary) Search(word string) (string, error) {
value, exist := d[word]
if exist {
return value, nil
}
return "", errNotFound
}
다음과 같이 dict map의 method를 정의해줄 수 있다.
package main
import (
"fmt"
"github.com/project/helloworld/mydict"
)
func main() {
dictionary := mydict.Dictionary{}
dictionary["hello"] = "hello"
result, err := dictionary.Search("bye")
if err != nil {
fmt.Println(err)
}
fmt.Println(result)
}
그리고 main에서 실행해보면
다음과 같이 결과를 반환받아 볼수 있다.
package main
import (
"fmt"
"github.com/project/helloworld/mydict"
)
func main() {
dictionary := mydict.Dictionary{}
dictionary["hello"] = "hello"
result, err := dictionary.Search("hello")
if err != nil {
fmt.Println(err)
}
fmt.Println(result)
}
정상 코드도 확인할 수 있다!
// add of dictionary
func (d Dictionary) Add(word, def string) error {
_, err := d.Search(word)
if err == errNotFound {
d[word] = def
} else if err == nil {
return errWordExists
}
return nil
}
Add() method를 만들었다.
package main
import (
"fmt"
"github.com/project/helloworld/mydict"
)
func main() {
dictionary := mydict.Dictionary{}
err := dictionary.Add("hello", "hello~")
if err != nil {
fmt.Println(err)
}
result, err := dictionary.Search("hello")
if err != nil {
fmt.Println(err)
}
fmt.Println(result)
}
그리고 main에서 다음과 같이 print해보면
결과를 확인해볼 수 있다.
var errCantUpdate = errors.New("cant update non-existing word")
// update for the dictionary
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
}
update 메서드를 작성하고
package main
import (
"fmt"
"github.com/project/helloworld/mydict"
)
func main() {
dictionary := mydict.Dictionary{}
baseWord := "hello"
dictionary.Add(baseWord, "hello~")
err := dictionary.Update(baseWord, "hello2")
if err != nil {
fmt.Println(err)
}
word, _ := dictionary.Search(baseWord)
fmt.Println(word)
}
main에서 실행해보면
변경되는 것을 확인해볼 수 있다.
// delte of the dictionary
func (d Dictionary) Delete(word string) {
delete(d, word)
}
package main
import (
"fmt"
"github.com/project/helloworld/mydict"
)
func main() {
dictionary := mydict.Dictionary{}
baseWord := "hello"
dictionary.Add(baseWord, "hello~")
word, _ := dictionary.Search(baseWord)
fmt.Println(word)
dictionary.Delete(baseWord)
word2, err := dictionary.Search(baseWord)
if err != nil {
fmt.Println(err)
}
fmt.Println(word2)
}
실행해보면
결과를 확인해볼 수 있다.