最近把個人ss項目作了一下結構調整,一頓重構後,輸入go run main.go,編譯報錯function undefined。額,怎麼回事明明把函數定義在main.go上面的文件中啊。以前也遇到過這個問題不過沒用深究,下面咱們來講說go main包那點事。git
golang main包推薦只有一個main.go文件,這樣你們就能按照習慣的方式,go run main.go 或 go build main.go
來運行編譯項目。golang
若是main包下有多個go文件,應該使用go run a.go b.go c.go 或 go run *.go
來運行,編譯同理。函數
由於mian包裏,使用go run main.go,編譯器只會加載main.go這個文件,不會加載main包裏的其餘文件,只有非main包裏的文件纔會經過依賴去自動加載。因此你須要輸入多個文件做爲參數。ui
golang推薦項目結構:code
. ├── .gitignore ├── README.md ├── main.go └── src ├── pkg1 │ └── a.go ├── pkg2 │ └── b.go └── pkg3 └── c.go
若是須要編譯爲多個程序,能夠加入cmd文件夾:cmd
. ├── .gitignore ├── README.md ├── cmd │ ├── cmd1 │ │ └── main.go │ └── cmd2 │ └── main.go └── src ├── pkg1 │ └── a.go ├── pkg2 │ └── b.go └── pkg3 └── c.go