Golang模块问题-软件包xxx / xxxx不在GOROOT中

问题描述

所以这是我的目录:

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"
)

...

Run it on the Playground

,
|--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.