golang - Go 패키지 경로와 패키지 이름은 달라도 좋은가?

원문

Go 에서는 패키지 패스의 최후의 요소는 go 파일의 패키지 이름과 같이 하는 것이 관례인데 “서로 다르면 어떻게 될까?”

확인해 보자

경로 트리

$ GOPATH /
   + - src /
      + - japan /
         + - main.go
         + - area /
            + - chugoku.go

변경 전 : 패키지 경로의 마지막 요소와 패키지 이름이 같다

마지막 요소 : area
패키지 이름 : area

area/chugoku.go

package area

import "fmt"

func Okayama() {
    fmt.Println("피치")
}

main.go

package main

import (
    // 패키지 패스의 최후의 요소:area
    "japan/area"
)

func main() {
    // 패키지 이름:area
    area.Okayama()
}

실행 잘 됨.

변경 후 : 패키지 경로의 마지막 요소와 패키지 이름이 다르다

마지막 요소 : area
패키지 이름 : chugoku

area/chugoku.go

package chugoku

import "fmt"

func Okayama() {
    fmt.Println("ピーチ")
}

main.go

package main

import (
    // 패키지 패스의 최후의 요소:변경 없음
    "japan/area"
)

func main() {
    // 페키지 이름:area -> chugoku
    chugoku.Okayama()
}

실행 잘됨.

결론적으로

import 문은 패키지가 아닌 경로 이름(문자열인 것도 납득)를 지정하고 있기 때문에 패키지 경로의 마지막 요소는 아래의(go 파일) 패키지 이름과 ‘달라도 괜찮다’이다.


이 글은 2018-12-29에 작성되었습니다.