1. Go 패키지
- Go는 패키지(Package)를 통해 코드의 모듈화, 코드의 재사용 기능을 제공한다.
- Go는 패키지를 사용해서 작은 단위의 컴포넌트를 작성하고, 이러한 작은 패키지들을 활용해서 프로그램을 작성할 것을 권장한다.
- Go는 실제 프로그램 개발에 필요한 많은 패키지들을 표준 라이브러리로 제공한다. 이러한 표준 라이브러리 패키지들은 GOROOT/pkg 안에 존재한다. GOROOT 환경변수는 Go 설치 디렉토리를 가리키는데, 보통 Go 설치시 자동으로 추가된다. 즉, 윈도우즈에서 Go를 설치했을 경우 디폴트로 C:\go 에 설치되며, GOROOT는 C:\go를 가리킨다.
2. Main 패키지
- 일반적으로 패키지는 라이브러리로서 사용되지만, "main" 이라고 명명된 패키지는 Go Compiler에 의해 특별하게 인식된다. 패키지명이 main 인 경우, 컴파일러는 해당 패키지를 공유 라이브러리가 아닌 실행(executable) 프로그램으로 만든다. 그리고 이 main 패키지 안의 main() 함수가 프로그램의 시작점이 된다. 패키지를 공유 라이브러리로 만들 때에는, main 패키지나 main 함수를 사용해서는 안된다.
3. 패키지 Scope
- 함수, 구조체, 인터페이스, 메서드의 이름(Identifier)이 첫문자를 대문자로 시작하면 이는 public 으로 사용할 수 있다.
- 소문자로 시작하면 이는 non-public 으로 패키지 내부에서만 사용될 수 있다.
4. 패키지 init 함수와 alias
- 패키지 실행시 처음으로 호출되는 init() 함수를 통해 패키지가 실행하면서 함수를 실행할 수 있다.
package testlib
var pop map[string]string
func init() { // 패키지 로드시 map 초기화
pop = make(map[string]string)
}
- alias 사용법
import (
mongo "other/mongo/db"
mysql "other/mysql/db"
)
func main() {
mondb := mongo.Get()
mydb := mysql.Get()
//...
}
5. 사용자 정의 패키지 생성
- 사용자 정의 라이브러리 패키지는 일반적으로 폴더를 하나 만들고 그 폴더 안에 .go 파일들을 만들어 구성한다. 하나의 서브 폴더안에 있는 .go 파일들은 동일한 패키지명을 가지며, 패키지명은 해당 폴더의 이름과 같게 한다. 즉, 해당 폴더에 있는 여러 *.go 파일들은 하나의 패키지로 묶인다.
package userPkg
import "fmt"
var abcMap map[string]string
func init() {
fruits = make(map[string]string)
fruits["a"] = "apple"
fruits["b"] = "banana'"
fruits["c"] = "coconut"
}
// GetFruit (외부에서 호출 가능)
func GetFruit(key string) string {
return fruits[key]
}
func getKey() { // 내부에서만 호출 가능
for key, value := range fruits {
fmt.Println(key)
}
}
- 패키지는 Java의 클래스라고 생각하고 개발했었다.
- 기본 개념을 보니 비슷한 것도 있고 다른 것도 있다.
참고 사이트
http://golang.site/go/article/15-Go-%ED%8C%A8%ED%82%A4%EC%A7%80
'개발 > Go' 카테고리의 다른 글
[Go] 기초 - 메소드 (1) | 2022.07.27 |
---|---|
[Go] 기초 - 구조체(Struct) (0) | 2022.07.27 |
[Go] 기초 - 컬렉션 (Map) (0) | 2022.07.22 |
[Go] 기초 - 컬렉션 (Slice) (0) | 2022.07.21 |
[Go] 기초 - 컬렉션 (배열) (0) | 2022.07.20 |