go - 方法在运行时不可见
问题描述
我有以下代码结构
❯ 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
这是random.go
文件的代码
package main
func main() {
SayHi()
}
该方法SayHi
是mymethod.go
这样定义的
package main
import "fmt"
// SayHi comment
func SayHi() {
fmt.Printf("saying hi ...")
}
当我运行 myrandom.go
时,我得到一个SayHi
未定义的错误。这两个文件都在同一个包下,tools
所以我不确定我做错了什么。我必须以不同的方式导入它吗?
解决方案
该go run
命令运行整个包或单个文件。如果您只指定一个文件,它不会加载整个文件夹。这就是为什么如果你运行go run random.go
,它不会加载mymethod.go
文件。
如果您在“工具”文件夹中只有一个main()
功能(假设是 a package main
),您可以简单地在该文件夹中执行此操作:
go run .
如果您只需要 2 个文件而不需要其他文件:
go run random.go mymethod.go
推荐阅读
- kubernetes - minikube kubernetes 上的待处理 pod:cpu 不足
- arrays - 装配 sscanf
- python - 在 Google Cloud 函数中运行 gsutil 命令
- python - “TypeError:'NoneType'对象不可迭代”在python
- xslt - 无法通过 xslt 读取 xml 数据
- jquery - 当返回是某个值时如何启动一个动作
- java - 如何在不使用 Comparator 的情况下按在 Java 中遇到子字符串的次数对对象列表进行排序?
- android - 当密钥是在 Android 密钥库中支持的保险箱时无法验证签名
- node.js - 我们有一个文化信息类。net ,我们在 node js 中是否有类似的结构/包?
- npm - npm install 命令在每一行给出 ERR