Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah maksud "eksport peringkat pakej"?

Apakah maksud "eksport peringkat pakej"?

PHPz
PHPzke hadapan
2024-02-05 22:15:081088semak imbas

Apakah maksud eksport peringkat pakej?

Kandungan soalan

Saya sedang mengusahakan pembalak ini. Apakah sebenarnya maksud import ini?

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")
}

Seperti yang anda lihat daripada contoh, log "terbina dalam" telah digantikan dengan pelaksanaan di atas. Saya tidak dapat mencari sebarang spesifikasi rasmi/formal, mungkin saya tidak tahu bagaimana fungsi ini dipanggil.


Jawapan Betul


Ini hanyalah rujukan kepada fakta bahawa fungsi dieksport terus pada peringkat pakej. Iaitu, mereka tidak memerlukan sebarang jenis atau rujukan pembolehubah untuk mengakses simbol yang dieksport ini.

..Hmm..Contoh dalam contoh ialah fungsi withfields().

Ini dieksport pada "peringkat pakej", jadi semua yang diperlukan untuk merujuk fungsi ialah nama pakej (atau alias).

Dalam kes ini, pakej logrus telah dialiaskan kepada log, jadi fungsi logrus 包已被别名为 log,因此可以简单地调用它导出的 withfields() yang dieksportnya boleh dipanggil:

    log.WithFields(/* etc */)

Sebaliknya, fungsi info() dalam contoh menggambarkan simbol (dalam kes ini fungsi) yang dieksport oleh jenis lain dalam pakej logrus The info () fungsi di sini dipanggil pada rujukan logrus.entry (dikembalikan oleh fungsi info() 函数说明了由 logrus 包中的另一种类型导出的符号(在本例中为函数);这里的 info() 函数在 logrus.entry 引用上调用(由 withfields()).

Apa masalahnya?

Eksport peringkat pakej adalah perkara biasa dalam go; pakej yang tidak mengeksport apa-apa tidak berguna kepada sesiapa pun! :)

Saya tidak pasti sama ada ia dirujuk secara eksplisit sebagai eksport "peringkat pakej"; biasanya ia hanya "eksport" atau "simbol eksport" dsb.

Dalam logrus 的情况下特别调用它们,因为包作者使用它来创建一个与 golang 中的标准 log pakej pakej "serasi" (juga gunakan eksport "peringkat pakej"). p>

Iaitu, jika anda mahu logrus 别名为 log,则 logrus 提供标准 log 包的超集;这是故意的,以便通过简单地更改进行 log 调用的文件中的导入语句,可以非常快速地将使用 log 包的现有代码转换为 logrus .

Atas ialah kandungan terperinci Apakah maksud "eksport peringkat pakej"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam