go run main.go undefined? golang main包那點事

wind5o發表於2018-09-18

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

相關文章