본문 바로가기

Programming Language/Go

[Go] Go언어 튜토리얼_간단한 프로젝트생성(V2)

반응형

이번 포스팅은 간단한 프로젝트를 만들어

실행함으로써 고언어에 익숙해지기 위한 튜토리얼

 

 

 

 

1. 폴더 및 파일 생성

- 프로젝트를 위해 새로운 폴더와 파일을 생성한다

$ mkdir mydict

$ touch mydict.go

 

 

2. mydict.go에 대한 코드 작성

package mian

//Dictionary type 생성
type Dictionary map[string]string

//err에 관한 변수 생성
var (
    errNotFound = errors.New("not found")
    errCantUpdate = errors.New("can't 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 string, def string) error {
    _, err := d.Search(word)
    
    if err = errNotFound {
        d[word] = def
    } 
    else if err == 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] = definition
    case errNotFound:
        return errCantUpdate
    }
    return nil
}


//Delete a word 
func (d Dictionary) Delete(word string) {
     delete(d, word)
}

>> map 타입을 활용한 go 작성

 

var ()

- 변수를 여러개 생성할 경우 위와 같이 var () 안에 여러개를 넣어도 된다

 

func (d Dictionary) Search(word string) (string, error)

- map 타입도 receiver로 작성 할 수 있다.

- return 을 여러개 할 경우 위와 같이 작성

 

map의 특성

1. map 생성 : type 변수명 map[키타입][값타입]

2. map[키]를 하면 값과 존재여부를 return 한다

3. map[키] = "값"을 하면 새로운 키와 값이 추가된다 

4. delete(map, 키)를 하면 값이 삭제된다

 

 

3. 실행을 위한 main.go 파일 생성

package main

import "/learngo/mydict"

func main() {
    dictionary := mydict.Dictionary{"first": "First word"}
    baseWord := "hello"
    dictionary.Add(baseWord, "First")
    err := dictionary.Update(baseWord, "Second")
    if err != nil {
        fmt.Println(err)
    }
    word, _ := dictionary.Search(baseWord)
    fmt.Println(word)
    dictionary.Delete(baseWord)
    _, err = dictionary.Search(baseWord)
    if err != nil {
        fmt.Println(err)
    }
}

>> 위에서 생성한 모든 함수를 실행하고 에러를 확인하는 main.go

>> 최종 출력은 아래와 같다

 

 

 

4. Go언어의 다양한 라이브러리

- Go에서 사용할 수 있는 다양한 라이브러리들이 모아져있다.

- 아래 사이트를 참고해서 필요한 라이브러리를 확인 하고 사용

 

https://golang.org/pkg/

 

Packages - The Go Programming Language

Packages

 

반응형