亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的 main.go 文件看不到其他文件

我的 main.go 文件看不到其他文件

Go
胡子哥哥 2022-01-04 15:50:26
我需要一些幫助來理解我在一個簡單的 Web 應用程序中的文件布局有什么問題。$GOPATH/src/example.com/myweb然后我有2個文件:$GOPATH/src/example.com/myweb/main.go$GOPATH/src/example.com/myweb/api.go兩個文件都有:包主api.go 文件如下所示:package mainimport (    "bytes"    "encoding/json"    "fmt"    "io"    "net/http"    "time")type API struct {    URI   string    Token  string    Secret string    client *http.Client}...我的 main.go 文件如下所示:package mainimport (    "github.com/gorilla/mux"    "html/template"    "net/http")var (    templates = template.Must(template.ParseFiles("views/home.html", "views/history.html", "views/incident.html"))    api = API{        URI: "http://localhost:3000",        Token: "abc",        Secret: "123",    })func renderTemplate(w http.ResponseWriter, tmpl string, hp *HomePage) {....}func WelcomeHandler(w http.ResponseWriter, r *http.Request) {....}func main() {    r := mux.NewRouter()    r.HandleFunc("/", WelcomeHandler)    r.PathPrefix("/assets/").Handler(        http.StripPrefix("/assets/", http.FileServer(http.Dir("assets/"))))    http.ListenAndServe(":9000", r)}在我排除的代碼中,我基本上使用在我的 api.go 文件中定義的結構,并且在執行以下操作時出現此錯誤:go run main.go# command-line-arguments./main.go:16: undefined: API./main.go:23: undefined: User我到底做錯了什么?我嘗試將 api.go 中的包名稱更改為 myweb 但這沒有幫助。我應該使用包名 myweb 嗎?假設只有 1 個文件有主文件嗎?
查看完整描述

2 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

您只編譯 main.go 文件。你應該使用:


go run main.go api.go

或者:


go run *.go

如果您正在編寫一個復雜的應用程序,您可能會將所有內容添加到子目錄中的包中,并擁有一個 main.go 文件。例如,etcd有一個etcdmain子目錄/包以及其他子目錄/包。就像是:


/alarm    

/auth

/cmd

/etcdmain

...

而 main.go 文件很簡單:


package main


import "github.com/coreos/etcd/etcdmain"


func main() {

    etcdmain.Main()

}


查看完整回答
反對 回復 2022-01-04
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

您正在使用 golang 工作區項目,這對您的應用程序結構有好處,而且還標準化。

當我們使用 golang 工作區時,您不能運行單個 go 文件。您需要調用 go build / go install。

安裝

go install example.com/myweb

上面的命令將在 example.com/myweb 上編譯您的主包。并且 myweb 可執行二進制文件將被放置在 GOPATH/bin 中。您可以手動運行它。

建造

go build example.com/myweb

該命令與 go install 類似,但是當您調用該命令時,二進制可執行文件將放置在當前目錄中,而不是 GOPATH/bin(除非您的當前目錄是 GOPATH/bin)。

有關更多信息,請查看此鏈接


查看完整回答
反對 回復 2022-01-04
  • 2 回答
  • 0 關注
  • 257 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號