본문으로 바로가기

Contents

    개요

    일반적으로 Package를 사용하기 위해서는 Remote 경로에 올려놓고 사용해야 하지만 빠른 개발을 위해 Local Path에 있는 Package를 Import하는 방법에 대해 알아보자.

     

     

    작업

    다음과 같은 형식의 디렉터리가 존재한다고 한다.

    .
    ├── handler
    │   ├── start.go
    │   ├── status.go
    │   └── stop.go
    └── main.go

    1️⃣ Child 모듈 초기화

    💡 Child 모듈은 Import가 되는 모듈을 뜻한다.

    Child 모듈 디렉터리로 들어가서 Go 모듈을 초기화한다.

    cd ./handler
    go mod init 'myapp.com/handler'
    
    • 도메인 주소로 입력을 하지 않는다면 go 버전에 따라서 에러가 발생할 수도 있다.
      • 그냥 아무런 도메인을 입력하고 형식만 지켜서 초기화하면 된다.

     

    2️⃣ Root 모듈 초기화

    💡 Root 모듈은 Child 모듈을 Import 하는 모듈을 뜻한다.

    Root 모듈로 돌아간다.

     

    먼저 Root 모듈의 main.go의 import 구문이다.

    // ./main.go
    package main
    
    import (
    	"fmt"
    	"myapp.com/handler"
    )

     

    Go 모듈을 초기화 한다.

    go mod init main

    여기서 생성된 go.mod 파일을 살펴보자

    module main
    
    go 1.19
    
    • go.mod 파일에는 아래와 같은 정보들이 명시된다.
      • 모듈 이름
      • Go 버전
      • 외부 패키지 등

    이대로 Go 언어를 실행하게 되면 임의의 도메인 주소로 입력했던 myapp.com에서 handler라는 패키지를 가져올것이다. 이를 Local Path에서 가져오도록 수정해야 한다.

     

    3️⃣ replace 구문 추가

    방법은 간단하다. 아래 처럼 go.mod에 replace 구문만 추가하면 된다.

    // ./go.mod
    module main
    
    go 1.19
    
    replace myapp.com/handler => ./handler

    이렇게 하면 현재 디렉터리의 상대경로인 handler에서 패키지를 import 해온다.

     

    💡go.mod 파일을 수정하기 귀찮으면 cli 형식으로도 제공하니 아래의 명령어를 참고하자.
    go mod edit -replace=myapp.com/handler=./handler
    

     

    Reference

    'Programming > Go' 카테고리의 다른 글

    [Golang] 패키지  (0) 2023.01.09
    [Golang] 문자열  (1) 2022.12.24
    [Golang] 포인터 (Pointer)  (0) 2022.11.13
    [Golang] 구조체 (Structure)  (1) 2022.11.13
    [Golang] 배열 (Array)  (0) 2022.11.12