Go 언어 스터디 - (2) 패키지

Go는 Python처럼 프로그램을 하나의 패키지로 인식하는데 컴파일 할 때 "main"이라고 이름지은 패키지가 있다면 그 패키지를 컴파일한 결과물은 실행 파일이 되고, "main" 패키지의 main함수가 프로그램의 시작점이 된다. 만약 프로그램이 아닌 라이브러리를 만들것이라면 main 함수를 만들거나 패키지 이름을 main이라 짓지 말아야 한다.

패키지 불러오기

이전 글에서 Hello, World!를 작성하며 import "fmt"fmt라는 패키지를 불러오고 Println 메소드를 사용하여 텍스트를 출력했다. 이 간단한 프로그램에서 알수있듯이 Go도 import 키워드를 사용하여 패키지를 불러온다.

import "fmt"
import "fmt"

여러 패키지 불러오기

만약 한 개 이상의 패키지를 불러와야 한다면 어떻게 해야할까? 단순히 매 패키지마다 import "..."를 해 줄 수도 있겠지만 Go에서는 조금 더 깔끔하게 할수 있다.

바로 아래처럼 여러 패키지들을 괄호로 묶어 선언하는 방법이다. 이를 Factored Import Declaration이라 하던데, 한국어로는 어떻게 부르는지 못 찾겠다.

import (
    "fmt"
    "math"
)
import (
    "fmt"
    "math"
)

패키지에 별명 붙이기

일반적으로 패키지를 선언하면 패키지.메소드와 같은 형태로 사용할수 있다.

import "math"

math.Max(10, 20)
import "math"

math.Max(10, 20)

하지만 아래와 같이 패키지에 별명을 붙여 다른 이름으로 사용할수도 있다. 다른 패키지와 이름이 겹치거나, 너무 길거나 할때 유용하다. 아래는 math 패키지에 m이라는 별명을 붙여 사용하는 예제다.

import m "math"

m.Max(10, 20)
import m "math"

m.Max(10, 20)

패키지 별명을 .으로 설정하면 해당 패키지 내에 있는 메소드를 바로 호출할 수 있다. 하지만 공식적으로 사용하지 않는걸 권장하고 있다.

import . "math"

Max(10, 20)
import . "math"

Max(10, 20)

사용하는 패키지만 불러올 것

Go는 사용하지 않는 패키지가 있다면 컴파일시 아래와 같은 오류를 발생시키므로 주의해야한다.

imported and not used: "fmt"