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

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

Go:如何在不重命名的情況下處理包沖突?

Go:如何在不重命名的情況下處理包沖突?

Go
智慧大石 2021-12-27 17:50:04
我試圖在不重命名的情況下解決包沖突,因為我認為它不是特別優雅。所以目前我有自己的中間件,它只處理數據庫連接,但我也使用 Echo 的中間件。Echo 也使用中間件作為中間件的包名。所以我試圖實現的解決方案是一種可以擴展 Echo 包的解決方案。但我沒有任何成功,也沒有找到任何關于這樣做的信息。在此處查看 echo 中間件:https : //github.com/labstack/echo/tree/master/middlewaremain.gopackage mainimport (    "github.com/facebookgo/grace/gracehttp"    "github.com/labstack/echo"    "github.com/labstack/echo/engine/standard"    "gitlab.com/project/middleware" //This is the middleware repository    "github.com/asaskevich/govalidator"    "gopkg.in/mgo.v2"    "gopkg.in/mgo.v2/bson"    "encoding/json"    "log")func main() {    e := echo.New()    e.Use(middleware.Db()) //Custom middleware    e.Use(middleware.Logger()) //Echo middleware    e.Use(middleware.Recover()) //Echo middleware    //Compile fails because Logger and Recover are not being exported.    e.Post("/", createUser())    e.Get("/", getUser())    e.Put("/", updateUser())    e.Delete("/", removeUser())    s := standard.New(":3000")    s.SetHandler(e)    gracehttp.Serve(s.Server)}中間件結構├── middleware│   ├── db.go //Custom middleware│   └── echo.go //Echo middleware所以db.go和echo.go都打包為middleware,但我無法從導入的 Echo 包中“導出”函數?;芈昿ackage middlewareimport (    . "github.com/labstack/echo/middleware")//Stop compiler errors//Echo middleware is usually accessed with middleware.Logger//But by using the preceding dot, you can drop the prefixvar _ = Logger()GO 的編譯失敗,因為Logger()和Recover()函數盡管被大寫但沒有導出 - 而db.go包中的Db()被導出。
查看完整描述

1 回答

?
ITMISS

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

您的導入解決方案不起作用,因為即使 echomiddleware包是在沒有標識符的情況下導入的,其導出的標識也不屬于您的middleware包的一部分。點導入只是一種語法糖……順便說一下,不建議使用它。


如果您真的不想使用包重命名(恕我直言,這是更好的解決方案),您可以定義自己的方法來在包中創建中間件。


package middleware


import "github.com/labstack/echo"

import "github.com/labstack/echo/middleware"


func Logger () echo.MiddlewareFunc {

    return middleware.Logger()

}

這將有效地消除對echo/middleware主代碼中的包的需求,代價是不需要真正需要的重復代碼。


查看完整回答
反對 回復 2021-12-27
  • 1 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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