为了账号安全,请及时绑定邮箱和手机立即绑定

Go run/build 找不到源文件

Go run/build 找不到源文件

Go
RISEBY 2022-05-23 17:38:51
我正在尝试运行一个简单的 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


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信