1. ホーム
  2. go

[解決済み] goでローカルパッケージをインポートするには?

2022-03-05 01:03:53

質問

私は囲碁の初心者で、ローカライズしたいサンプルコードに取り組んでいます。

元の main.go import文であった。

 import (
    "log"
    "net/http"
    "github.com/foo/bar/myapp/common"
    "github.com/foo/bar/myapp/routers"
)

今、私は commonrouters パッケージで /home/me/go/src/myapp

そこで、import文を変換してみました。

import (
    "log"
    "net/http"
    "./common"
    "./routers"
)

しかし go install myapp こんなエラーが出るんです。

can't load package: /home/me/go/src/myapp/main.go:7:3: local import "./common" in non-local package

また commonrouters ではなく ./common./routers をimport文に書くと、こうなります。

myapp/main.go:7:3: cannot find package "common" in any of:
    /usr/local/go/src/common (from $GOROOT)
    /home/me/go/src/common (from $GOPATH)
myapp/main.go:8:2: cannot find package "routers" in any of:
    /usr/local/go/src/routers (from $GOROOT)
    /home/me/go/src/routers (from $GOPATH)

どうすれば直るのでしょうか?

どのように解決するのですか?

さて、問題がわかりました。 基本的に、インポートのためのGoの開始パスは $HOME/go/src

だから、私はただ myapp をパッケージ名の前に置く、つまりインポートする必要があります。

import (
    "log"
    "net/http"
    "myapp/common"
    "myapp/routers"
)