修改GO111MODULE环境变量,解决报错package project1/... is not in std

316 阅读1分钟

最近开始学习go编程,目录结构如下F:/go,

src/
    project1/
            src/
                libproj2/
                        test1.go
                main.go

test1.go文件如下

package libproj2

import (
	"errors"
	"fmt"
)

// Hello 为指定的人返回问候语.
func Hello(name string) (string, error) {
	// 如果没有给出名字,返回一个带有消息的错误.
	if name == "" {
		return "", errors.New("empty name")
	}

	// 如果接收到名称,则返回一个嵌入名称的值
	// 在问候消息中.
	message := fmt.Sprintf("Hi, %v. Welcome!", name)
	return message, nil
}

main.go文件如下

package main

import (
	"fmt"
	"log"

	"project1/src/libproj2"
)

func main() {
	fmt.Print("hello\rasdfasdf")
	message, err := libproj2.Hello("xxx")

	if err != nil {
		log.Fatal(err)
	}

	fmt.Print(message)
}

运行后报错

[Running] go run "f:\go\src\project1\src\main.go" src\project1\src\main.go:7:2:
package project1/src/libproj2 is not in std (C:\Program Files\GO\src\project1\src\libproj2)

原因在于,go evn 里面的GO111MODULE为空,导致go不搜索本地项目中的非标准库包。

image.png

解决办法,运行go env -w GO111MODULE=off,Go工具会尝试在GOPATH中查找包。

修改后解决

image.png