我正在试用 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 build
或 go install
将编译由导入路径命名的包,以及它们的依赖项,
关于go run 使用陈旧版本的子包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57068664/