首頁 > 後端開發 > Golang > 主體

「包級匯出」是什麼意思

PHPz
發布: 2024-02-05 22:15:08
轉載
1089 人瀏覽過

「包級匯出」是什麼意思

問題內容

我正在研究這個記錄器。這個導入到底意味著什麼?

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中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板