[解決済み] テスト
2022-01-29 05:48:34
質問
バージョン1.12.1でgoプロジェクトを作成しています。
もし私が
GOPATH="$(pwd)/vendor:$(pwd)" GOBIN="$(pwd)/bin" go clean
以下のようなエラーが発生します。
can't load package: package github.com/marvincaspar/go-example: unknown import path "github.com/marvincaspar/go-example": cannot find module providing package github.com/marvincaspar/go-example
のみです。
go clean
,
go run
または
go build
は正常に動作します。
以下はメインコードのフォルダ構成です。
.
├── Makefile
├── cmd
│ └── server
│ └── main.go
├── go.mod
├── go.sum
└── pkg
└── storage
└── mysql
└── storage.go
以下は
go.mod
ファイルは次のようになります。
module github.com/marvincaspar/go-example
go 1.12
require (
github.com/go-sql-driver/mysql v1.4.1
)
そして最後に
main.go
ファイルを作成します。
package main
import (
"fmt"
"os"
"github.com/marvincaspar/go-example/pkg/storage/mysql"
)
func main() {
if err := run(); err != nil {
fmt.Fprintf(os.Stderr, "%v", err)
os.Exit(1)
}
}
func run() error {
// init storage
s := mysql.NewStorage()
// do some other stuff...
}
何が間違っているのか、何か思い当たることはありますか?
解決方法は?
Go build/install はルートディレクトリにあるメインパッケージを探そうとしており、あなたの場合、サブディレクトリ(cmd/server)をチェックしていません。そのため、package not found エラーになります。
正しくビルドするためには、次のように実行します。
go build github.com/marvincaspar/go-example/cmd/server
同様に、プロジェクトを実行するには、module-name/main-package-pathを指定する必要があります。
go run github.com/marvincaspar/go-example/cmd/server
Go clean も同様に module-name/path-with-main-package を指定することで実行可能です。
go clean github.com/marvincaspar/go-example/cmd/server
または
GOPATH="$(pwd)/vendor:$(pwd)" GOBIN="$(pwd)/bin" go clean github.com/marvincaspar/go-example/cmd/server
しかし https://blog.learngoprogramming.com/code-organization-tips-with-packages-d30de0d11f46 ソースファイルはプロジェクトのルートに置いてください。その方がいいんです。
関連
-
[解決済み] Notepad++ 用の Go 言語プラグイン
-
[解決済み] Goで構造体のフィールドを反復処理する
-
[解決済み] panic: ランタイムエラー:Goのインデックスが範囲外
-
コンパイル: バージョン "" は go ツールのバージョン "" と一致しません。
-
[解決済み] go mod vendor` コマンドの目的は何ですか?
-
[解決済み] パッケージ <package_name> を提供するモジュールの go.sum のエントリがありません。
-
[解決済み] Goの:=と=の演算子の違い
-
[解決済み] "宣言されているが使用されていない "という迷惑なエラーを回避する方法
-
[解決済み】Goはサードパーティ・パッケージをどのようにアップデートしますか?
-
[解決済み】データ(型インターフェース{})を文字列に変換できない:型アサーションが必要
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み] Go モジュールのローカル リポジトリとして Artifactory を使用する方法
-
[解決済み] GORMでレコードを作成・更新するには?
-
[解決済み] ParseFormはいつ使うべきで、FormValueとPostFormValueはいつ使うべきですか?
-
コンパイル: バージョン "" は go ツールのバージョン "" と一致しません。
-
[解決済み] go getとgo installの違いは何ですか?
-
[解決済み] 全モジュールのアップデートを行う
-
[解決済み] golangでリーズナブルなスタック実装をお探しですか?
-
[解決済み】関数宣言の構文:関数名の前に括弧でくくられたもの
-
[解決済み】Goの構造体のスタックとヒープ割り当て、およびガベージコレクションとの関連性