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

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

如何解決 Go 項目中嵌套應用程序二進制文件中的依賴項?

如何解決 Go 項目中嵌套應用程序二進制文件中的依賴項?

Go
當年話下 2023-06-05 19:25:51
這聽起來很愚蠢,但我正在嘗試構建我的新 golang 項目一段時間,但我遇到了以下錯誤無法加載包:包 github.com/kuskmen/yamq/cmd/yamq-client:在 C:\projects\yamq\cmd\yamq- 中找到包 main (main.go) 和 yamqclient (yamq-client.go)客戶我知道這應該很容易修復,但我來自 .NET,但我在 Go 項目及其依賴項解析模型方面仍然沒有經驗,因此很費勁。我的項目結構看起來像這樣/yamq? ? /cmd? ? ? ? /yamq-client? ? ? ? ? // yamq client application binary? ? ? ? ? ? main.go? ? ? ? ? ?// package main? ? ? ? ? ? yamq-client.go? ? // package yamqclient? ? ? ? /yamq-server? ? ? ? ? // yamq server application binary? ? ? ? ? ? main.go? ? ? ? ? ?// package main? ? ? ? ? ? yamq-server.go? ? // package yamqserver? ? go.mod? ? ? ? ? ? ? ? // contains only "module github.com/kuskmen/yamq" for now? ? ... // some library files that will probably be moved to /shared folder到目前為止一切順利,當我go build在最外層目錄 ( /yamq ) 中執行操作時,它正在成功構建(或者至少沒有顯示任何錯誤),但是當我嘗試構建二進制yamq-client文件時yamq-server,我每次嘗試都會遇到上述錯誤用谷歌搜索或找到有用的東西,我得到了一些舊文章或答案,可以追溯到 2013-2016 年,它提出了一些關于$GOPATH等等的事情,因為我正在嘗試使用 go 模塊,所以這里不應該是這種情況。
查看完整描述

2 回答

?
慕姐4208626

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

根據:

  • Go 程序員通常將所有 Go 代碼保存在一個工作區中。

  • 工作區包含許多版本控制存儲庫(例如,由 Git 管理)。

  • 每個存儲庫包含一個或多個包。

  • 每個包在一個目錄中包含一個或多個 Go 源文件。

  • 包目錄的路徑決定了它的導入路徑。


查看完整回答
反對 回復 2023-06-05
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

對于您的項目,我會做這樣的事情:


$ tree

.

├── clientlib

│   └── lib.go

├── cmd

│   ├── client

│   │   └── main.go

│   └── server

│       └── main.go

├── go.mod

└── serverlib

    └── lib.go


5 directories, 5 files


$ cat go.mod

module myproject.com

模塊名稱是任意的(可以是github.com/yourname/yourproject)。


對于服務器端:


$ cat serverlib/lib.go 

package serverlib


import "fmt"


func Hello() {

    fmt.Println("Hello from serverlib.Hello")

}


$ cat cmd/server/main.go 

package main


import (

    "fmt"


    "myproject.com/serverlib"

)


func main() {

    fmt.Println("Running server")

    serverlib.Hello()

}

現在我們可以構建并運行它了:


$ go build -o server cmd/server/main.go 

$ ./server

Running server

Hello from serverlib.Hello

客戶端看起來是對稱的。


變體:你可以用它們的實際二進制名稱命名.go文件- 比如和. 每個包中的包仍然是,但隨后無需顯式創建具有文件名(沒有 )的可執行文件。cmd/...server.goclient.gomaingo build.go-o


查看完整回答
反對 回復 2023-06-05
  • 2 回答
  • 0 關注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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