Heim >Backend-Entwicklung >Golang >Golang – Der Paketname besteht aus einem doppelten Unterstrich

Golang – Der Paketname besteht aus einem doppelten Unterstrich

WBOY
WBOYnach vorne
2024-02-09 15:00:12982Durchsuche

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 __
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
Inhalt in

greet.go

package __

import "fmt"

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

main.go

package main

import greet "playground/greet"

func main() {
    greet.hello("eric")
}

Aktuelles Verzeichnis

$ pwd
/Users/thedatageek/Codes/go-playground

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen