Go 方法在运行时不可见

Go 方法在运行时不可见,go,Go,我有以下代码结构 ❯ tree -L 2 . ├── Dockerfile ├── Makefile ├── README.md ├── cmd │ ├── app ├── coverage.out ├── go.mod ├── go.sum ├── internal │ ├── context │ ├── pubsub │ └── test_helpers ├── pkg │ ├── <service_name> └──

我有以下代码结构

❯ tree -L 2                    
.
├── Dockerfile
├── Makefile
├── README.md
├── cmd
│   ├── app
├── coverage.out
├── go.mod
├── go.sum
├── internal
│   ├── context
│   ├── pubsub
│   └── test_helpers
├── pkg
│   ├── <service_name>
└── tools
    ├── random.go
    └── mymethod.go
方法SayHi在mymethod.go中定义如下

包干管 进口fmt //早希评论 func SayHi{ fmt.Printfsaying hi。。。 } 当我运行random.go时,我得到一个错误,SayHi未定义。这两个文件都在同一个包(即工具)下,因此我不确定我做错了什么。我必须以不同的方式导入它吗?

go-run命令运行整个包或单个文件。如果只指定了一个文件,则不会加载整个文件夹。这就是为什么如果运行go random.go,它将不会在加载mymethod.go文件

如果“工具”文件夹中只有一个主功能,即程序包主功能,则可以在该文件夹中执行此操作:

跑吧。 如果您只需要这两个文件,而不需要其他文件:

go run random.go mymethod.go
您使用哪个命令来运行它?除非您真的知道自己在做什么,否则绝对不要使用go run来执行go代码。go run是一个加载的footgun。我使用vscode default launch.json来运行它。它正在使用${file}占位符运行代码。是否应将其替换为所有文件?请找到引用文件夹而不是文件的方法。