본문 바로가기
프로그래밍

👨‍💻 [Go] Go 에서 모듈은 어떻게 만들고, 활용하나요?

by 밝음의기둥 2025. 1. 7.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

Go 에서 모듈은 어떻게 만들고, 활용하는지 간략히 알아보았습니다.


질문 >

Go 에서 모듈은 어떻게 만들고, 활용하나요?

답변 >

Go에서 모듈은 Go 프로젝트를 관리하고 재사용 가능한 패키지로 배포하기 위한 단위입니다. 모듈을 만들고 활용하는 방법은 다음과 같습니다.


1. Go 모듈 초기화 및 생성

(1) 모듈 초기화

모듈을 만들려면 프로젝트 디렉터리에서 go mod init 명령어를 사용해 모듈을 초기화합니다.

예제:

mkdir mymodule
cd mymodule
go mod init github.com/username/mymodule

  • github.com/username/mymodule: 모듈 이름(일반적으로 배포될 저장소의 URL 경로).
  • 이 명령을 실행하면 go.mod 파일이 생성됩니다.

생성된 go.mod 파일:

module github.com/username/mymodule

go 1.20


(2) 패키지 작성

모듈 내에서 패키지를 작성합니다. 패키지는 프로젝트의 특정 기능을 구현하는 코드 묶음입니다.

디렉터리 구조 예:

mymodule/
├── go.mod
├── math/
│   └── math.go
└── strings/
    └── strings.go

math/math.go:

package math

// Add adds two integers and returns the result.
func Add(a, b int) int {
    return a + b
}

// Subtract subtracts the second integer from the first.
func Subtract(a, b int) int {
    return a - b
}

strings/strings.go:

package strings

// Reverse reverses a string and returns the result.
func Reverse(s string) string {
    result := []rune(s)
    for i, j := 0, len(result)-1; i < j; i, j = i+1, j-1 {
        result[i], result[j] = result[j], result[i]
    }
    return string(result)
}


(3) 로컬에서 모듈 테스트

모듈을 테스트하기 위해 main.go를 작성합니다.

루트 디렉터리에 main.go 작성:

package main

import (
    "fmt"
    "github.com/username/mymodule/math"
    "github.com/username/mymodule/strings"
)

func main() {
    fmt.Println("Add:", math.Add(3, 5))
    fmt.Println("Subtract:", math.Subtract(10, 4))
    fmt.Println("Reverse:", strings.Reverse("hello"))
}

실행:

go run main.go


2. 모듈 버전 관리 및 배포

(1) 모듈 버전 지정

Go 모듈은 버전을 통해 관리됩니다. 일반적으로 Git 태그를 사용해 버전을 설정합니다.

예제:

git init
git add .
git commit -m "Initial commit"
git tag v1.0.0

(2) 모듈 배포

  • GitHub와 같은 원격 저장소에 코드를 푸시하여 다른 프로젝트에서 사용할 수 있도록 배포합니다.

예제:

git remote add origin <https://github.com/username/mymodule.git>
git push origin main --tags


3. 모듈 사용

(1) 다른 프로젝트에서 모듈 가져오기

다른 프로젝트에서 모듈을 사용하려면 import 구문을 사용하고, go get 명령어를 실행합니다.

예제:

mkdir anotherproject
cd anotherproject
go mod init github.com/username/anotherproject

main.go 작성:

package main

import (
    "fmt"
    "github.com/username/mymodule/math"
    "github.com/username/mymodule/strings"
)

func main() {
    fmt.Println("Add:", math.Add(2, 3))
    fmt.Println("Reverse:", strings.Reverse("world"))
}

의존성 설치:

go get github.com/username/mymodule@v1.0.0

실행:

go run main.go


4. 유용한 명령어 

명령어 설명
go mod init 새로운 모듈을 초기화.
go get 외부 모듈이나 특정 버전을 가져와 설치.
go mod tidy 사용하지 않는 의존성 제거 및 필요한 의존성 추가.
go mod vendor 의존성을 로컬 vendor 디렉터리에 복사.
go list -m all 현재 모듈에서 사용 중인 모든 의존성을 출력.
go mod verify 의존성 무결성을 확인.

5. Go 모듈 관리의 장점

  1. 의존성 관리:
    • 프로젝트별로 독립적인 의존성 버전을 관리할 수 있습니다.
  2. 재사용성:
    • 모듈을 다른 프로젝트에서 손쉽게 가져와 사용할 수 있습니다.
  3. 버전 관리:
    • Git 태그를 통해 안정된 버전을 명시적으로 관리할 수 있습니다.
  4. 자동 의존성 다운로드:
    • 필요한 모듈과 하위 의존성을 자동으로 가져옵니다.

Go 모듈은 대규모 프로젝트와 협업에 최적화된 구조를 제공하므로, 모듈화를 통해 코드의 유지보수성과 확장성을 높일 수 있습니다.



🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형