最近开始学习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不搜索本地项目中的非标准库包。
解决办法,运行go env -w GO111MODULE=off,Go工具会尝试在GOPATH中查找包。
修改后解决