1 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
當(dāng)您創(chuàng)建 時(shí)project1/vendor/google.golang.org/grpc
,這意味著對(duì)于 下的包project1/...
, 的導(dǎo)入google.golang.org/gprc/...
將透明地重新映射到供應(yīng)商版本。
外部的任何軟件包project1
將繼續(xù)導(dǎo)入非供應(yīng)的google.golang.org/grpc/...
軟件包。雖然供應(yīng)商的包可能是上游的副本,但 Go 將它們視為獨(dú)立的包。因此它們包含的類(lèi)型并不等效。
最有可能發(fā)生的情況是,您的非供應(yīng)依賴(lài)項(xiàng)之一導(dǎo)入了 grpc 包并在其公共 API 中使用其類(lèi)型。當(dāng)您使用來(lái)自 的 API 時(shí)project1
,您將獲得上游類(lèi)型,該類(lèi)型無(wú)法使用供應(yīng)商類(lèi)型分配給變量。
此問(wèn)題有兩種可能的解決方案:
供應(yīng)所有使用您已供應(yīng)的依賴(lài)項(xiàng)。
如果您使用的 Go >= 1.11,請(qǐng)切換到較新的 Go 模塊構(gòu)建系統(tǒng)。這將使您能夠繼續(xù)控制何時(shí)升級(jí)依賴(lài)項(xiàng),而不會(huì)因?yàn)?code>project1/vendor/...樹(shù)而混淆類(lèi)型系統(tǒng)。
- 1 回答
- 0 關(guān)注
- 151 瀏覽
添加回答
舉報(bào)