go run 使用陈旧版本的子包

标签 go

我正在试用 Jaeger/OpenTracing tutorial并发现我对 HotROD 应用程序代码所做的任何更改都没有任何效果。

项目结构类似于(删节):

├── main.go
├── pkg
└── services
    ├── config
    │   └── config.go
    ├── customer
    ├── driver
    ├── frontend
    └── route

我通过运行 go run main.go all 启动应用程序。 它的行为符合预期,Jaeger 上的痕迹与 Medium 上的屏幕截图完全匹配。

我编辑 services/config/config.go 以按照指示更改 RouteWorkerPoolSize 和 MySQLGetDelay 变量。 然后停止服务器并使用 go run main.go all

再次启动它

我希望这些更改会反射(reflect)在新运行的服务器中,但事实并非如此。该行为与以前完全相同。就好像 go 正在运行旧代码。

我是不是对go run有什么误解?

环境变量:

GOPATH="/home/ronnie/go"
GOROOT="/usr/local/go"

工作目录:

/home/ronnie/go/src/github.com/jaegertracing/jaeger/examples/hotrod

在 Kubuntu 18.04 上运行的 Go 版本 1.12.6

最佳答案

go run编译并运行指定的主 Go 包。

只有 go buildgo install将编译由导入路径命名的包,以及它们的依赖项,

关于go run 使用陈旧版本的子包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57068664/

相关文章:

go - 如何添加go二进制作为bitbucket管道工件?

arrays - Golang 将字符串打印为字节数组

html - 为什么这个程序不打印任何东西?

go - 从 YAML 对象列表创建 API 对象

go - 扫描 github.com/golang/protobuf/proto/testdata : cannot find package "." 时出错

pointers - "<type> is pointer to interface, not interface"困惑

string - 如何将 []int8 转换为字符串

go - 运行curl命令时,TCP服务器返回错误

c++ - 为什么 Rust 需要 C++ 工具链来生成 Rust 二进制文件,而像 Go 这样的语言没有这个要求?

amazon-web-services - 运行代码部署 Hook 时找不到 Go 命令