프로그래밍/Go

[Go] 사용자 패키지 제작 및 문서화

프로그래민구찌 2024. 11. 27. 17:16

Go는 강력한 표준 라이브러리 외에도 자신만의 패키지를 만들어 재사용할 수 있는 기능을 제공합니다. 이번 포스트에서는 Go에서 사용자 패키지를 작성하고, 이를 문서화하는 방법에 대해 설명하고 간단한 예제를 제공하겠습니다.


1. Go 사용자 패키지 제작

Go에서 패키지를 만드는 방법은 매우 간단합니다. 기본적으로 하나의 디렉터리가 하나의 패키지를 나타냅니다. 예를 들어, 사칙 연산을 처리하는 패키지를 만든다고 할 때, 아래와 같은 구조로 패키지를 작성할 수 있습니다.

1.1. 패키지 파일 작성

패키지를 만들려면 먼저 package 키워드를 사용하여 패키지를 정의해야 합니다. 예를 들어, 사칙 연산을 처리하는 패키지를 만들고 싶다면, 아래와 같이 작성할 수 있습니다.

// arithmetic/arithmetic.go
package arithmetic

// 두 정수의 덧셈을 수행하는 함수
func Add(x, y int) int {
	return x + y
}

// 두 정수의 뺄셈을 수행하는 함수
func Subtract(x, y int) int {
	return x - y
}

// 두 정수의 곱셈을 수행하는 함수
func Multiply(x, y int) int {
	return x * y
}

// 두 정수의 나눗셈을 수행하는 함수
func Divide(x, y int) float64 {
	if y == 0 {
		return 0
	}
	return float64(x) / float64(y)
}

여기서는 Add, Subtract, Multiply, Divide라는 네 가지 함수를 만든 arithmetic 패키지를 정의했습니다. 이 패키지는 두 숫자를 받아 사칙 연산을 수행합니다.

1.2. 패키지 사용

이제 arithmetic 패키지를 다른 Go 프로그램에서 사용할 수 있습니다. 아래는 main.go 파일에서 위의 arithmetic 패키지를 사용하는 예시입니다.

// main.go
package main

import (
	"fmt"
	"section12/arithmetic" // arithmetic 패키지 임포트
)

func main() {
	// Add 함수 호출
	result := arithmetic.Add(10, 5)
	fmt.Println("10 + 5 =", result)

	// Subtract 함수 호출
	result = arithmetic.Subtract(10, 5)
	fmt.Println("10 - 5 =", result)

	// Multiply 함수 호출
	result = arithmetic.Multiply(10, 5)
	fmt.Println("10 * 5 =", result)

	// Divide 함수 호출
	result = arithmetic.Divide(10, 5)
	fmt.Println("10 / 5 =", result)
}

위 예제에서 arithmetic 패키지를 import하여 사칙 연산을 수행하는 함수를 호출하고 결과를 출력합니다.


2. Go 사용자 패키지 문서화

Go는 패키지 문서화도 매우 쉽게 할 수 있습니다. 각 함수, 변수, 타입에 주석을 추가하면, Go는 이를 자동으로 문서화하여 godoc 도구를 통해 볼 수 있도록 합니다. godoc은 Go 패키지를 웹 브라우저에서 쉽게 확인할 수 있게 해주는 도구입니다.

2.1. 문서화 주석

주석은 Go에서 자동으로 문서화되는 중요한 부분입니다. 함수, 타입, 패키지에 대한 설명을 주석으로 작성하면, godoc 도구를 통해 웹에서 확인할 수 있습니다.

// Add 함수는 두 정수를 받아 덧셈을 수행한 결과를 반환합니다.
func Add(x, y int) int {
	return x + y
}

// Subtract 함수는 두 정수를 받아 뺄셈을 수행한 결과를 반환합니다.
func Subtract(x, y int) int {
	return x - y
}

// Multiply 함수는 두 정수를 받아 곱셈을 수행한 결과를 반환합니다.
func Multiply(x, y int) int {
	return x * y
}

// Divide 함수는 두 정수를 받아 나눗셈을 수행한 결과를 반환합니다. 
// 만약 y가 0이면 0을 반환합니다.
func Divide(x, y int) float64 {
	if y == 0 {
		return 0
	}
	return float64(x) / float64(y)
}

위와 같이 함수마다 주석을 달아두면, godoc을 통해 해당 함수에 대한 설명을 자동으로 생성할 수 있습니다.

2.2. godoc 도구 사용

Go에서는 godoc 명령어를 사용하여 로컬에서 패키지를 문서화할 수 있습니다. godoc을 사용하면 패키지의 함수나 타입에 대한 설명을 HTML 형식으로 볼 수 있습니다.

 

1.godoc 서버를 실행하려면 아래 명령어를 터미널에 입력합니다.

godoc -http=:6060

2. 브라우저에서 http://localhost:6060/pkg/로 접속하여 문서화된 패키지를 확인할 수 있습니다.


3. Go 패키지의 디렉토리 구조

Go 프로젝트의 디렉토리 구조는 다음과 같이 정리할 수 있습니다.

goproject/
  ├── go.mod         // Go 모듈 파일
  ├── main.go        // 메인 실행 파일
  └── section12/
      └── arithmetic/
          └── arithmetic.go  // 사용자 정의 패키지
  • go.mod 파일은 Go 프로젝트가 모듈 시스템을 사용할 때 필요한 파일입니다.
  • section12/arithmetic/arithmetic.go는 사용자 정의 패키지 파일입니다.
  • main.go는 메인 실행 파일로, arithmetic 패키지를 사용하여 사칙 연산을 수행합니다.
  •  

4. Go 패키지 설치 및 관리

Go는 패키지를 외부에서 설치하여 사용할 수도 있습니다. 예를 들어, go get 명령어를 사용하면 외부 패키지를 다운로드하여 사용할 수 있습니다.

go get github.com/gin-gonic/gin

이 명령어는 Gin 웹 프레임워크 패키지를 다운로드하여 사용할 수 있게 해줍니다.


결론

Go에서 사용자 정의 패키지를 작성하고 문서화하는 과정은 매우 간단합니다. 패키지를 작성한 후, 각 함수에 주석을 달면 godoc을 통해 쉽게 문서화할 수 있습니다. 이로써, 코드의 재사용성을 높이고, 다른 개발자와 협업 시 문서화된 패키지를 제공할 수 있습니다.

이 예제를 바탕으로 Go의 패키지 시스템을 활용하여 더 많은 기능을 추가하고, 프로젝트를 확장해 나갈 수 있습니다.