我正在研究這個記錄器。這個導入到底意味著什麼?
the simplest way to use logrus is simply the package-level exported logger:
package main import ( log "github.com/sirupsen/logrus" ) func main() { log.WithFields(log.Fields{ "animal": "walrus", }).Info("A walrus appears") }
從範例中可以看出,「內建」日誌已被上述實作所取代。我找不到任何官方/正式的規格,可能我不知道這個功能是如何調用的。
這只是對在套件層級直接匯出函數這一事實的引用。也就是說,它們不需要任何類型或變數引用來存取這些導出的符號。
..嗯..範例中的範例是 withfields()
函數。
這是在「套件層級」匯出的,因此引用該函數所需的只是套件名稱(或別名)。
在本例中,logrus
套件已被別名為 log
,因此可以簡單地呼叫它導出的 withfields()
函數:
log.WithFields(/* etc */)
相較之下,範例中的info()
函數說明了由logrus
套件中的另一種類型導出的符號(在本例中為函數);這裡的info()
函數在logrus.entry
參考上呼叫(由withfields()
函數傳回)。
套件級匯出在go
中很常見;一個不匯出任何東西的套件對任何人都沒有多大用處! :)
我不確定它們是否被明確引用為“包級”導出;通常它們只是“導出”或“導出符號”等。
在logrus
的情況下特別呼叫它們,因為套件作者使用它來創建一個與golang 中的標準log
套件「相容」的套件(也使用「套件級”導出)。 p>
即如果您將logrus
別名為log
,則logrus 提供標準log
套件的超集;這是故意的,以便透過簡單地更改進行log
呼叫的檔案中的導入語句,可以非常快速地將使用log
套件的現有程式碼轉換為logrus
。
以上是「包級匯出」是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!