모듈과 패키지

1. 모듈의 변천과정

  • Go 1.11 이전 : 모듈 존재 X
  • Go 1.11 : 모듈이 소개되었지만 미완성
  • Go 1.13 : 모듈 완성
  • Go 1.16 : 모듈이 이제 기본이 되었다.


◾ 모듈

모듈은 패키지의 모음

◾ 패키지

패키지는 코드를 묶는 단위로 모든 코드는 반드시 패키지로 묶여야 한다.

우리가 흔히 부르는 프로그램은 다양한 관점에서 의미를 해석할수 있을 텐데 실핼파일 관점에서보면 실행시작 지점을 포함한 패키지. 즉, main함수를 포함한 main패키지이다.

그외의 패키지들은 실행시점을 포함하지 않은 패키지로 프로그램의 보조패키지로 동작한다.



패키지 import

//case 1
import "fmt"

//case2
import (
  "fmt"
  "math/rand"
)
fmt.Println(rand.Int())


//case3
import (
  "text/template"
  htemplate "html/template"
)


◾ 사용하지 않는 package

import (
  "fmt"
  "math/rand"
  _ "strings"
)

별칭으로 _를 주면 import하되 사용하지 않아도 import가 가능

패키지 초기화에 따른 부가효과를 위해서 import해야만 하는 경우가 존재한다.


패키지 외부 공개

함수나 구조체, 구조체 필드들은 대문자로 시작해야 외부에서 접근이 가능하다. 소문자로 시작한다면 같은 패키지내부에서만 접근이 가능하다.





Reference

『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트