Package란?
Golang의 코드를 묶는 단위이며, 모든 코드는 패키지에 속해야 한다.
Module이란?
module은 종속성 관리를 위해 Golang이 지원하는 것이다.
모듈은 패키지의 모음이며, 모듈 파일이 있는 곳이 패키지의 루트 경로가 된다.
Go언어를 사용 할 때, 디렉토리 구조를 잘 파악하고,
모듈을 사용해야한다.
(모듈 : 패키지 = 1:N)
원격 리포지토리의 패키지를 사용할 때는 그냥
go get github.com/sirupsen/logrus
이런식으로 하면 외부 패키지를 쉽게 사용가능하다.
하지만 로컬 경로의 패키지를 사용하려면 또 다르게 접근해야한다.
일단 src, bin, pkg 3가지의 폴더에서 시작하고
src/github.com/username/modulename 보통 이런식으로 프로젝트 폴더를 잡는다.
현재 디렉토리가 modulename 인 곳에서
go mod init 명령어를 실행하고,
go mod tidy를 실행한다.
보통 src/github.com/username/modulename/main.go 하나를 남겨두고,
추가로 패키지를 구성할 경우,
src/github.com/username/modulename/printhello/printhello.go
이런식으로 만든다.
// main.go 코드
package main
import (
"fmt"
"github.com/username/modulename"
)
func main() {
printhello.PrintHello()
}
// printhello.go
package printhello
import "fmt"
func PrintHello() {
fmt.Println("Hello World")
}
package 이름과 go파일 이름이 같게 해야한다.