我正在尝试运行一个简单的 hello world 样式程序,该程序从单独的自定义包中导入打印功能,但尽管$GOPATH设置了正确的等,Go 仍无法找到它。缺少什么会使文件被拾取?etherk1ll@ubuntu:~/Development/GoWorkSpace/src/sonarparser$ echo $GOPATH /home/etherk1ll/Development/GoWorkSpace/etherk1ll@ubuntu:~/Development/GoWorkSpace/src/sonarparser$ pwd/home/etherk1ll/Development/GoWorkSpace/src/sonarparseretherk1ll@ubuntu:~/Development/GoWorkSpace/src/sonarparser$ lsjsonparser.go main.goetherk1ll@ubuntu:~/Development/GoWorkSpace/src/sonarparser$ go run main.go main.go:5:2: cannot find package "sonarparser/jsonparser" in any of: /usr/local/go/src/sonarparser/jsonparser (from $GOROOT) /home/etherk1ll/Development/GoWorkSpace/src/sonarparser/jsonparser (from $GOPATH)main.gopackage mainimport ( "fmt" "jsonparser")func main() { fmt.Println("Hello world 1") fmt.Println(jsonparser.HelloTwo)}jsonparser.gopackage jsonparserimport "fmt"func HelloTwo() { fmt.Println("Hello world 2")}
1 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
因为jsonparser.go和main.go位于同一个包中,Go 要求这些文件具有相同的包名。并且因为您为执行定义了 main 函数,所以包必须是“main”。
第 1 步:所以您应该将jsonparser.go的包重命名为main.
// jsonparser.go
package main
import "fmt"
func HelloTwo() {
fmt.Println("Hello world 2")
}
第 2 步:您需要更新main.go文件以更正导入路径:
// main.go
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello world 1")
HelloTwo()
}
第 3 步:然后运行以下命令(您必须在命令中包含所有必要的文件)
go run main.go jsonparser.go
- 1 回答
- 0 关注
- 194 浏览
添加回答
举报
0/150
提交
取消