最近把我的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