반응형
Step 1
- Struct 를 이용하여 내부 func를 활용한 func 를 만들어보자
- 단어를 추가하고 에러 처리를 해보자
- `mydict.go`
package mydict
import "errors"
// Dictionary type
type Dictionary map[string]string
var errNotFound = errors.New("Not Found")
var errWordExists = errors.New("That word already exists")
// Seaerch for a word
func (d Dictionary) Search(word string) (string, error) {
value, exists := d[word] // exists 는 true/false
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
}
- `main.go`
package main
import (
"fmt"
"kjham/learngo_dictionary/mydict"
)
func main() {
dictionary := mydict.Dictionary{"first": "First word"}
word := "Hello"
definition := "Greeting"
err := dictionary.Add(word, definition)
if err != nil {
fmt.Println(err)
}
hello, _ := dictionary.Search(word)
fmt.Println("found", word, "definition:", hello)
err2 := dictionary.Add(word, definition)
if err2 != nil {
fmt.Println(err2)
}
}
Step 2
- 단어를 수정하거나 삭제를 해보자
- `dict.go`
package mydict
import "errors"
// Dictionary type
type Dictionary map[string]string
var (
errNotFound = errors.New("Not Found")
errCantUpdate = errors.New("Can't update non-existing word")
errWordExists = errors.New("That word already exists")
)
// Seaerch for a word
func (d Dictionary) Search(word string) (string, error) {
value, exists := d[word] // exists 는 true/false
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, def string) error {
_, err := d.Search(word)
switch err {
case nil:
d[word] = def
case errNotFound:
return errCantUpdate
}
return nil
}
// Delete a word
func (d Dictionary) Delete(word string) {
delete(d, word)
}
- `main.go`
package main
import (
"fmt"
"kjham/learngo_dictionary/mydict"
)
func main() {
dictionary := mydict.Dictionary{"first": "First word"}
word := "Hello"
err := dictionary.Add(word, "First")
if err != nil {
fmt.Println(err)
}
err2 := dictionary.Update(word, "Second")
if err2 != nil {
fmt.Println(err2)
}
hello, _ := dictionary.Search(word)
fmt.Println("found", word, "definition:", hello)
dictionary.Delete(word)
find, err3 := dictionary.Search(word)
if err3 != nil {
fmt.Println(err3)
} else {
fmt.Println(find)
}
}
반응형
'SW LAB > Go Lang' 카테고리의 다른 글
[Google Go 언어] 미니 프로젝트 : Scrapper (0) | 2021.11.22 |
---|---|
[Google Go 언어] 미니 프로젝트 : URL Checker (0) | 2021.11.16 |
[Google Go 언어] 미니 프로젝트 : Banking (0) | 2021.11.16 |
[Google Go 언어] 기본 문법 (0) | 2021.11.16 |
[Google Go 언어] Resultful API (Gin Web Framework) (0) | 2021.11.15 |
댓글