go

Go 패키지

까오기 2024. 7. 11. 13:20

Go 언어에서 패키지(Package)는 코드를 구조화하고 관리하기 위한 중요한 개념입니다. 패키지는 함수, 변수, 구조체 등의 코드를 논리적으로 그룹화하여 모듈화하고 재사용 가능한 단위로 제공합니다. Go 언어의 모든 코드는 패키지 내에 위치하며, 패키지를 통해 코드의 구성 및 관리가 가능합니다.

패키지의 기본 구성 요소

  1. 패키지 선언
    모든 Go 파일은 package 선언으로 시작합니다. 예를 들어, main 패키지는 Go 프로그램의 실행 진입점을 나타내며 반드시 main 패키지로 선언되어야 합니다.
    package main
    일반적으로 다른 패키지의 코드를 사용할 때는 해당 패키지의 이름을 지정해야 합니다. 예를 들어, fmt 패키지를 사용할 때:
    import "fmt"
  2. 패키지 내의 함수와 변수
    package mypackage
    
    // public 함수 (대문자로 시작)
    func PublicFunc() {}
    
    // private 함수 (소문자로 시작)
    func privateFunc() {}
    
    // 패키지 변수 (global 변수 역할)
    var PackageVar int = 10
    패키지 내에는 함수, 변수, 상수, 타입 등이 정의될 수 있습니다. 이들은 해당 패키지 내에서만 사용 가능하거나, 외부에서 접근할 수 있도록 public 또는 private으로 설정할 수 있습니다.
  3. 패키지의 임포트
    다른 패키지의 기능을 사용하기 위해 import 문을 사용합니다. Go 언어는 필요한 패키지를 명시적으로 임포트해야 합니다. 예를 들어, 표준 라이브러리에서 fmt 패키지를 임포트하는 방법:
    import "fmt"

패키지 사용 예시

예를 들어, 다음과 같은 구조의 패키지가 있다고 가정해 봅시다:

// math.go
package mymath

func Add(a, b int) int {
    return a + b
}

func Subtract(a, b int) int {
    return a - b
}
 

이 패키지는 mymath라는 이름으로 함수들을 그룹화하고 있습니다. 다음은 이 패키지를 사용하는 방법입니다:

// main.go
package main

import (
    "fmt"
    "mypackage/mymath" // 패키지 임포트
)

func main() {
    result1 := mymath.Add(10, 5)
    fmt.Println("10 + 5 =", result1) // 출력: 10 + 5 = 15

    result2 := mymath.Subtract(10, 5)
    fmt.Println("10 - 5 =", result2) // 출력: 10 - 5 = 5
}

위 예시에서 main.go 파일에서 mypackage/mymath 패키지를 임포트하여 Add와 Subtract 함수를 사용하고 있습니다. 이처럼 패키지를 사용하면 코드를 모듈화하고 관리할 수 있으며, 다른 프로젝트에서도 재사용할 수 있는 코드를 작성할 수 있습니다.

패키지 디렉토리 구조

Go 언어에서 패키지는 일반적으로 프로젝트의 디렉토리 구조를 반영합니다. 예를 들어, main 패키지의 경우 main.go 파일이 프로젝트 루트에 위치하며, mymath 패키지의 경우 mymath.go 파일이 mymath 디렉토리에 위치할 수 있습니다.

패키지는 Go 언어에서 코드를 구조화하고 모듈화하는 중요한 도구입니다. 잘 구성된 패키지는 코드의 가독성을 높이고, 유지보수성을 강화하며, 코드 재사용을 가능하게 합니다.

 

출처 : chatGPT