1. Packages
: 모든 프로그램은 패키지로 구성된다. 프로그램의 첫 시작은 main package의 main함수이다.
1.1 package namming rule
: 패키지 이름은 디렉토리 경로의 마지막 이름을 사용하는 것이 규칙입니다. 예를 들어 "path/filepath"
를 사용한다면 패키지명은 filepath
이다.
1.2 import
: go에서는 여러가지의 패키지를 소괄호로 묶어서 import를 한다. 하지만, 하나씩 나누어서도 사용가능 합니다.
import (
"fmt"
"math"
)
import "fmt"
import "math"
1.2.2 Exported names
: 외부에서 접근 가능한 자원의 첫문자는 대문자로 시작한다. 예를 들어 Foo과 FOO은 외부에서 접근 가능한 자원이지만, foo은 외부에서 접근 할수 없다.
* 질문 : 그렇다면 상수는 어떻게 public 과 private를 구분하지?
1.3. package init함수와 alias
개발자가 패키지를 작성할 때, 패키지 실행시 처음으로 호출되는 init()함수를 작성할 수 있다. 즉, init 함수는 패키지가 로드되면서 실행되는 함수로 별도의 호출 없이 자동으로 호출된다.
package testlib
var pop map[string]string
func init(){ // 패키지 로드시 map 초기화
pop = make(map[string]string)
}
경우에 따라 패키지를 import 하면서 단지 그 패키지 안의 init()함수만을 호출하고자 하는 케이스가 있다. 이런 경우는 패키지 import 시 _라는 alias를 지정한다. 아래는 other/xlib패키지를 호출하면서 _alias를 지정한 예이다.