Golang – Der Paketname besteht aus einem doppelten Unterstrich

WBOY
Freigeben: 2024-02-09 15:00:12
nach vorne
944 Leute haben es durchsucht

Golang - 包名称为双下划线

Bei der Golang-Programmierung ist der Paketname ein sehr wichtiges Konzept. Die Spezifikation für Paketnamen besteht darin, Kleinbuchstaben zu verwenden und keine Sonderzeichen und Leerzeichen zu enthalten. Es gibt jedoch einen Sonderfall, bei dem der Paketname doppelt unterstrichen ist. Dies liegt daran, dass in Golang Pakete mit doppelten Unterstrichen in ihren Paketnamen eine besondere Bedeutung haben. Es stellt ein leeres Paket dar, das zum Deklarieren von Variablen oder zum Durchführen einiger spezieller Initialisierungsvorgänge verwendet wird. Diese Funktion ist in einigen spezifischen Szenarien sehr nützlich, insbesondere bei der Entwicklung einiger Tools oder Frameworks. Wenn Sie also in Golang einen Paketnamen mit doppelten Unterstrichen sehen, lassen Sie sich nicht verwirren, es handelt sich um einen legalen Paketnamen mit besonderer Bedeutung.

Frageninhalt

Im von meinem Protobuf generierten Go-Code lautet das Paket:

package __
Nach dem Login kopieren
Was bedeutet

双下划线? Ist es dasselbe wie der Ordnername?

Gibt es dazu eine Dokumentation? Ich habe gesucht, konnte sie aber nicht finden. Und der Code lässt sich fehlerfrei kompilieren.

Workaround

Ja, das bedeutet dasselbe Verzeichnis. Schauen wir uns den folgenden Code an.

Verzeichnisstruktur

.
├── go.mod
├── greet
│   └── greet.go
└── main.go
Nach dem Login kopieren
Inhalt in

greet.go

package __

import "fmt"

func hello(name string) {
    fmt.printf("hello %s\n", name)
}
Nach dem Login kopieren
Inhalt in

main.go

package main

import greet "playground/greet"

func main() {
    greet.hello("eric")
}
Nach dem Login kopieren

Aktuelles Verzeichnis

$ pwd
/Users/thedatageek/Codes/go-playground
Nach dem Login kopieren

Leider kann ich auch keine Go-Dokumentation finden.

Das scheint jedoch eine gute Sache zu sein. Sie müssen dem Paket nicht unbedingt einen Namen geben. Sie benennen einfach das Verzeichnis und die Paketnamen sind automatisch identisch.

Hinweis: Das ist definitiv nicht grpcprotobuf. Wenn Sie jedoch als Benutzerdefiniert den ursprünglichen Stub aus der Originaldatei generiert und einige zusätzliche Dienstprogrammdateien hinzugefügt haben, können Sie diese in einem Verzeichnis ablegen und sie dann direkt über den Verzeichnisnamen importieren. Zum Beispiel das folgende Github-Repository

https://www.php.cn/link/570badcfe14697bf2a244e2e25b93e59 https://www.php.cn/link/11b01bd09f8d22fecc14d3418f83caab https://www.php.cn/link/8cee1a0fe765af425dc6f0b6169a6c07 https://www.php.cn/link/8230bea7d54bcdf99cdfe85cb07313d5 https://www.php.cn/link/05f03bcccda955d1689b36046a6db899 https://www.php.cn/link/3a93a609b97ec0ab0ff5539eb79ef33a

Das obige ist der detaillierte Inhalt vonGolang – Der Paketname besteht aus einem doppelten Unterstrich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!