問題描述
今天在運行一個項目,一個包下有兩個文件,分別是main.go和route,main函數在main.go文件中,main引用了route.go中的兩個函數,SetupRoutes和SetupAdminRoutes
go build 編譯后,直接運行,為任何問題,但是 go run 出現問題了
提示:
查看route.go文件 是否有這兩個函數?
發現 這個兩個函數也是真實存在的
這里就產生了兩個問題?
- go build 為什么能找到同一包下的函數
- go run 為什么就找不到同一報下的函數
原因
- go run: 會先進行編譯操作,而在此處的編譯它只會以這個main.go為準,導致引用其他文件出現找不到的情況
- go build:不一樣,它會自動查找引用文件并打包
解決方案
命令
go run *.go
Goland 工具如何解決
Goland默認按照文件級別來進行編譯,即默認只編譯main.go,而不管其他go文件,我們可以修改默認選項:
ps:我建了個學習交流群,需要的可以進群