본문 바로가기

Tech/Tips

package ... is not in GOROOT 해결법

반응형

이미지 출처 : Pixabay

goLang을 공부하던 도중, 점점 작업 디렉토리가 지저분해지는걸 보고 다른 언어들처럼 폴더를 만들어 소스를 관리하고자 했습니다.

그러면 import문을 사용해서 main.go에서 깔끔하게 불러올 수 있을테니깐요.

하지만 어림도 없지!

조금의 삽질을 거쳐 ,이럴 때 go에서 제공하는 디펜던시 관리 시스템인 go modules를 사용하면 해결할 수 있다는 것을 확인했습니다.

https://blog.golang.org/using-go-modules

 

Using Go Modules - The Go Blog

Tyler Bui-Palsulich and Eno Compton 19 March 2019 Introduction This post is part 1 in a series. Note: For documentation on managing dependencies with modules, see Managing dependencies. Go 1.11 and 1.12 include preliminary support for modules, Go’s new d

blog.golang.org

저는 다음과 같은 구조로 디렉토리를 구성해 두었습니다..

~/go/src/learngo - main.go

                           ㄴ /mydict - mydict.go

~/go/src/learngo 디렉토리에서 다음 명령어를 실행해 줍니다.

go mod init

그러면 다음과 같은 내용을 가진 go.mod 파일이 생성됩니다.

module learngo

go 1.16

조금 더 깔끔하게 만들기 위해 다음과 같이 디렉토리를 정리합니다.

~/go/src/learngo - main.go

                           ㄴ /modules/mydict - mydict.go

 

이제 import 문에 다음과 같이 적어줍니다.

package main

import (
	"fmt"
	"learngo/modules/mydict"
)

func main() {
	dict := mydict.NewMydict()
	dict.Add("sean", "go_noob")
	fmt.Println(dict.Get("sean"))
}

잘 실행되는 것을 확인할 수 있습니다.

반응형