Dictionary Project로 실습(w. method)

최준호·2022년 10월 31일
0

Go

목록 보기
8/9
post-thumbnail

📗 Dictionary Project 실습

📄 Dictionary Map 만들기

package mydict

// type of dictionary
type Dictionary map[string]string

map 앞에 Dictionary 라는 alias를 주었다.

📄 dictionary map 사용하기

package main

import (
	"fmt"

	"github.com/project/helloworld/mydict"
)

func main() {
	dictionary := mydict.Dictionary{}
	dictionary["hello"] = "hello"
	fmt.Println(dictionary)
}

다음과 같이 사용하면

결과값을 가져올 수 있다.

📄 Search() 만들기

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() 만들기

// 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해보면

결과를 확인해볼 수 있다.

📄 update

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에서 실행해보면

변경되는 것을 확인해볼 수 있다.

📄 delete

// 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)
}

실행해보면

결과를 확인해볼 수 있다.

profile
해당 주소로 이전하였습니다. 감사합니다. https://ililil9482.tistory.com

0개의 댓글