最近把個人ss項目作了一下結構調整,一頓重構後,輸入go run main.go,編譯報錯function undefined。額,怎麼回事明明把函數定義在main.go上面的文件中啊。以前也遇到過這個問題不過沒用深究,下面咱們來講說go main包那點事。git
go run main.go 或 go build 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