问题描述
所以这是我的目录:
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运行hello.go时,终端显示出来是这样的:
D:\ Users \ eien_zheng \ go \ src \ ppppppSample> go运行hello.go hello.go:5:2:包ppppppSample / newFolderOne不在GOROOT中(C:\ Go \ src \ ppppppSample \ newFolderOne)
这是我的问题:
(由于我是golang的新手,我希望你们能理解并容忍我的一些误解)
根据我对Go模块的理解(也许是错误的),Go模块的功能是让某种在线资源下载到目录GOPATH / pkg / mod中,而不是存在于GOROOT中。 无论您将项目放在哪个目录中,如果您初始化Go模块,您的项目仍可以从GOPATH / pkg / mod导入那些资源。 但是,据我所知,它仍然可以使用软件包系统在项目目录周围导入软件包,同时通过Go模块系统导入在线资源。
当我为hello.go进行(mod init)操作时,它失去了该项目的(基本包导入功能)吗?
解决方法
使用模块的路径将软件包导入模块中:
package main
import (
"fmt"
jjj "mmmmmppppp/newFolderOne"
)
...
,
|--src
|--sample
|--newFolder
|-firstSample.go (package xyz)
|--hello.go (package main import(xyz "sample/newFolder")
|--go mod (module sample go 1.15)
go mod应该引用根文件夹,这里的根文件夹是| --sample
模块样本 进入v1.xx
在hello.go内部;
package main import ( xyz "sample/newFolder")
and make sure exported functins or variables use camelCase aka starts with BlockLetters.