2

ここに私のディレクトリがあります:

go
|-src
   |-ppppppSample
        |-newFolderOne
            |-firstSample.go
        |-hello.go
        |-go.mod

これがhello.goの内容です

package main

import (
    "fmt"
    jjj "ppppppSample/newFolderOne"
)



func main() {
    fmt.Println("start to test")
    fmt.Println(jjj.FirstVVVV)
}

これがfirstSample.goの内容です

package newFolderOne

var FirstVVVV = "Im first SSSSSSSSSSSS"

これが私のgo.modのコンテンツです

module mmmmmppppp

go 1.15

cmd go run hello.go を指定すると、端末は次のようになりました。

D:\Users\eien_zheng\go\src\ppppppSample> go run hello.go hello.go:5:2: パッケージ ppppppSample/newFolderOne が GOROOT にありません (C:\Go\src\ppppppSample\newFolderOne)

だからここに私の質問があります:

(私はgolangの初心者なので、私の誤解を理解して許容していただければ幸いです)

Goモジュールに対する私の理解によると(おそらく間違っているかもしれません)、Goモジュールの機能により、ある種のオンラインリソースがGOROOTに存在するのではなく、ディレクトリGOPATH/pkg/modにダウンロードされるようになります。プロジェクトがどのディレクトリにあっても、Go モジュールを初期化すれば、プロジェクトは GOPATH/pkg/mod からそれらのリソースをインポートできます。しかし!!、私の理解では、パッケージシステムを使用してプロジェクトディレクトリの周りにパッケージをインポートし、その間にGoモジュールシステムによってオンラインリソースをインポートできます。

hello.go に対して (mod init) を実行すると、このプロジェクトの (基本パッケージのインポート機能) が失われるのはなぜですか?

4

2 に答える 2

-1

モジュールのパスを使用して、モジュール内にパッケージをインポートします。

package main

import (
    "fmt"
    jjj "mmmmmppppp/newFolderOne"
)

...

Playground で実行します

于 2020-10-16T06:27:02.727 に答える