패키

패키지 에서 Go

1개의 연습 문제

패키지 소개

Go에서는 애플리케이션을 패키지로 구성해요. 패키지는 같은 폴더에 있는 소스 파일들의 모음이에요. 한 폴더에 있는 모든 소스 파일은 파일 맨 위에 같은 패키지 이름을 써야 해요. 관례상 패키지 이름은 그 패키지가 있는 폴더와 같게 지어요.

package greeting

Go는 방대한 표준 라이브러리 패키지를 제공하고, import 키워드로 프로그램에서 사용할 수 있어요. 표준 라이브러리 패키지는 이름을 그대로 써서 임포트해요.

package greeting

import "fmt"

여러 패키지는 괄호로 묶어 한 번에 임포트할 수 있어요.

package greeting

import (
    "errors"
    "fmt"
)

서드파티 패키지는 패키지가 있는 위치의 URL을 사용해 임포트해요. 패키지를 임포트할 때 별칭을 붙일 수도 있어요. 이렇게 하면 패키지 이름이 충돌하는 것을 피할 수 있어요:

package greeting

import (
	"errors"

	errs "github.com/pkg/errors"
)

임포트한 패키지는 패키지 이름이나 별칭으로 사용해요:

// using the internal errors package
errors.New("Connection not established")

// using the errors package located at github.com/pkg/errors by alias
errs.New("Connection not established")

Go에서는 다른 패키지의 코드가 어떤 항목을 호출할 수 있는지가 그 항목을 어떻게 선언했는지에 따라 결정돼요. 함수, 타입, 변수, 상수를 외부에 공개하려면(이를 exported라고 해요) 이름이 대문자로 시작해야 해요. 이는 public과 private 같은 접근 제한자를 사용하는 Java 등 다른 프로그래밍 언어와 비슷해요.

package greeting

// Hello is a public function (callable from other packages).
func Hello(name string) string {
    return "Hello " + name
}

// hello is a private function (not callable from other packages).
func hello(name string) string {
    return "Hello " + name
}

직접 정의한 struct 타입의 필드 이름도 마찬가지예요. 대문자로 시작하는 필드 이름은 외부에 공개되고, 소문자로 시작하는 이름은 공개되지 않아요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요

패키지 배우기

연습이 잠겨 있어요

패키지 개념을 연습하려면 연습 문제 1개를 더 잠금 해제해요