最近把個人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