go run main.go undefined? golang main包那點事
阿新 • • 發佈:2018-12-10
最近把我的ss專案做了一下結構調整,一頓重構後,輸入go run main.go,編譯報錯function undefined。額,怎麼回事明明把函式定義在main.go上面的檔案中啊。之前也遇到過這個問題不過沒用深究,下面我們來說說go main包那點事。
golang main包推薦只有一個main.go檔案,這樣大家就能按照習慣的方式,go run main.go,go build main.go來執行編譯專案。
如果main包下有多個go檔案,應該使用go run a.go b.go c.go或go run *.go來執行,編譯同理。
因為mian包裡,使用go run main.go,編譯器只會載入main.go這個檔案,不會載入main包裡的其他檔案,只有非main包裡的檔案才會通過依賴去自動載入。所以你需要輸入多個檔案作為引數。
golang推薦專案結構:
.
├── .gitignore
├── README.md
├── main.go
└── src
├── pkg1
│ └── a.go
├── pkg2
│ └── b.go
└── pkg3
└── c.go
如果需要編譯為多個程式,可以加入cmd資料夾:
. ├── .gitignore ├── README.md ├── cmd │ ├── cmd1 │ │ └── main.go │ └── cmd2 │ └── main.go └── src ├── pkg1 │ └── a.go ├── pkg2 │ └── b.go └── pkg3 └── c.go