개발/Go

[Go] 기초 - 패키지

devhooney 2022. 7. 25. 20:39
728x90

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. Go 패키지 Go는 패키지(Package)를 통해 코드의 모듈화, 코드의 재사용 기능을 제공한다. Go는 패키지를 사용해서 작은 단위의 컴포넌트를 작성하고, 이러한 작은 패키지들을 활용해서 프로그램을

golang.site

https://pkg.go.dev/std

 

Standard library - Go Packages

Directories ¶ Expand all tar Package tar implements access to tar archives. Package tar implements access to tar archives. zip Package zip provides support for reading and writing ZIP archives. Package zip provides support for reading and writing ZIP arch

pkg.go.dev

 

728x90

'개발 > 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