Go のテスト結果: メインモジュールが見つかりませんが、/Users/dp/Documents に .git/config が見つかりました 質問する

Go のテスト結果: メインモジュールが見つかりませんが、/Users/dp/Documents に .git/config が見つかりました 質問する

私はGolangを始めたばかりで、ユニットテストを実行しようとしています。go testを実行すると、ターミナルから次の出力が表示されます。

go: cannot find main module, but found .git/config in /Users/dp/Documents
    to create a module there, run:
    cd ../.. && go mod init

私のファイル構造は次のようにかなりシンプルです

├── CARDS
│   ├── .vscode
│   ├── main.go
│   ├── test.go
│   ├── deck_test.go
│   └── my_cards.txt

deck_test.goの内容は

package main

import "testing"

func TestNewDeck(t *testing.T) {
    d := newDeck()

    if len(d) != 52 {
        t.Errorf("Length is not 52, got %v", len(d))
    }

    if d[0] != "A of D" {
        t.Errorf("First card is not A of D, got %v", d[0])
    }

    if d[len(d)-1] != "K of C" {
        t.Errorf("Last card is not K of C, got %v", d[len(d)-1])
    }

}

どのような洞察でも役に立ちます!

ベストアンサー1

必須ではありませんが、initGit (またはその他の VCS) リポジトリ内にいる場合は、モジュールがremotes 情報を参照してモジュールの名前を正しく判断できるように、次のようにすることが一般的に推奨されます。

git init
git remote add origin https://github.com/syntaqx/dacode
go mod init

go mod私のモジュール名がおそらく であることを意図していることを理解できるようにしますgithub.com/syntaqx/dacode

あるいは、特定の順序で作業する必要がないようにするためによく行うのですが、モジュール名を指定することもできます。

go mod init dacode # valid, but..
go mod init github.com/syntaqx/dacode # is generally better, because it describes my remote

これを指定することで、コードから何かを変更することなく、モジュールをどのディレクトリでも初期化できるようになります。

注記:特に、始めたばかりのときは、リポジトリに使用するのと同じ命名構造でモジュールに名前を付けることを強くお勧めします。そうすることで、次のようなコマンドが可能になります。

go get github.com/syntaqx/dacode

内部の作業を自分で行わずに正しく機能させる。仕組みについて理解を深めるにつれて、その慣例に従うか、慣例に反するかを決めることができますが、一貫性を保つ方が賢明でしょう。

これが役に立つことを願っています!

おすすめ記事