Heim > Backend-Entwicklung > Golang > Was ist ein Paket in der Go-Sprache?

Was ist ein Paket in der Go-Sprache?

青灯夜游
Freigeben: 2023-01-11 10:19:09
Original
1596 Leute haben es durchsucht

Ein Paket ist eine Sammlung mehrerer Go-Quellcodes und eine erweiterte Lösung zur Wiederverwendung von Code. Go-Sprachpakete verwenden die Organisationsform eines Verzeichnisbaums. Im Allgemeinen ist der Name eines Pakets der Name des Verzeichnisses, in dem sich seine Quelldatei befindet. Pakete können in sehr tiefen Verzeichnissen definiert werden Der Verzeichnispfad, aber das Paket wird im Allgemeinen referenziert.

Was ist ein Paket in der Go-Sprache?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

Die Go-Sprache verwendet Pakete, um Quellcode zu organisieren. Ein Paket ist eine Sammlung mehrerer Go-Quellcodes und eine erweiterte Lösung zur Code-Wiederverwendung. Die Go-Sprache bietet uns viele integrierte Pakete wie fmt, os, io usw.

Pakete und Ordner in Golang haben eine Eins-zu-eins-Entsprechung und müssen im GOPATH-Verzeichnis erstellt werden, bevor sie verwendet werden können. Wenn ein Paket in Golang auf den Inhalt eines anderen Pakets verweisen muss, muss es mit dem Schlüsselwort import importiert werden, bevor es verwendet werden kann.

Jede Quellcodedatei muss zu einem bestimmten Paket gehören, und die erste Zeile gültigen Codes in der Quellcodedatei muss die Anweisung package pacakgeName sein, mit der Sie das Paket deklarieren, in dem Sie sich befinden. package pacakgeName 语句,通过该语句声明自己所在的包。

包的基本概念

Go语言的包借助了目录树的组织形式,一般包的名称就是其源文件所在目录的名称,虽然Go语言没有强制要求包名必须和其所在的目录名同名,但还是建议包名和所在目录同名,这样结构更清晰。

包可以定义在很深的目录中,包名的定义是不包括目录路径的,但是包在引用时一般使用全路径引用。比如在GOPATH/src/a/b/ 下定义一个包 c。在包 c 的源码中只需声明为package c,而不是声明为package a/b/c,但是在导入 c 包时,需要带上路径,例如import "a/b/c"

包的习惯用法:

  • 包名一般是小写的,使用一个简短且有意义的名称。

  • 包名一般要和所在的目录同名,也可以不同,包名中不能包含- 等特殊符号。

  • 包一般使用域名作为目录名称,这样能保证包名的唯一性,比如 GitHub 项目的包一般会放到GOPATH/src/github.com/userName/projectName 目录下。

  • 包名为 main 的包为应用程序的入口包,编译不包含 main 包的源码文件时不会得到可执行文件。

  • 一个文件夹下的所有源码文件只能属于同一个包,同样属于同一个包的源码文件不能放在多个文件夹下。

包的导入

要在代码中引用其他包的内容,需要使用 import 关键字导入使用的包。具体语法如下:

import "包的路径"
Nach dem Login kopieren

注意事项:

  • import 导入语句通常放在源码文件开头包声明语句的下面;

  • 导入的包名需要使用双引号包裹起来;

  • 包名是从GOPATH/src/

Das Grundkonzept von Paketen

Go-Sprachpakete basieren auf der Organisationsform eines Verzeichnisbaums. Im Allgemeinen ist der Name eines Pakets der Name des Verzeichnisses, in dem sich seine Quelldatei befindet, obwohl es sich um die Go-Sprache handelt schreibt nicht vor, dass der Paketname mit dem Verzeichnisnamen identisch sein muss, in dem es sich befindet. Es wird jedoch empfohlen, dass der Paketname und das Verzeichnis, in dem es sich befindet, denselben Namen haben Die Struktur ist klarer.

Pakete können in sehr tiefen Verzeichnissen definiert werden. Die Definition des Paketnamens umfasst nicht den Verzeichnispfad, aber beim Verweisen auf das Paket wird im Allgemeinen der vollständige Pfad verwendet. Definieren Sie beispielsweise ein Paket c unter GOPATH/src/a/b/. Im Quellcode von Paket c müssen Sie es nur als Paket c anstelle von Paket a/b/c deklarieren. Beim Importieren des Pakets c ist dies jedoch erforderlich um den Pfad zu bringen. Zum Beispiel import "a/b/c".

Idiom-Verwendung von Paketen:

Paketnamen werden im Allgemeinen in Kleinbuchstaben geschrieben. Verwenden Sie einen kurzen und aussagekräftigen Namen.

Der Paketname hat im Allgemeinen den gleichen Namen wie das Verzeichnis, in dem er sich befindet, oder er kann anders sein. Der Paketname darf keine Sonderzeichen wie - enthalten.
  • Pakete verwenden im Allgemeinen den Domänennamen als Verzeichnisnamen, was die Eindeutigkeit des Paketnamens gewährleistet. Beispielsweise werden die Pakete von GitHub-Projekten im Allgemeinen im GOPATH/src/github.com/userName/ abgelegt. projectName-Verzeichnis.
  • Das Paket mit dem Namen main ist das Einstiegspaket der Anwendung. Beim Kompilieren der Quellcodedatei, die das Hauptpaket nicht enthält, erhalten Sie keine ausführbare Datei.
  • Alle Quellcodedateien in einem Ordner können nur zum selben Paket gehören. Quellcodedateien, die auch zum selben Paket gehören, können nicht in mehreren Ordnern abgelegt werden.

Paketimport

Um auf den Inhalt anderer Pakete in Ihrem Code zu verweisen, müssen Sie das Schlüsselwort import verwenden, um das verwendete Paket zu importieren. Die spezifische Syntax lautet wie folgt:

import "lab/test"
import "database/sql/driver"
import "database/sql"
Nach dem Login kopieren

Hinweise:

import Importanweisungen werden normalerweise unterhalb der Paketdeklarationsanweisung am Anfang der Quellcodedatei platziert.

Der Name des importierten Pakets muss doppelt eingeschlossen werden Anführungszeichen;

Was ist ein Paket in der Go-Sprache?

Paketname Wird nach GOPATH/src/ berechnet, wobei / zum Trennen der Pfade verwendet wird.

🎜🎜🎜🎜Der Importpfad des Pakets 🎜🎜🎜🎜Es gibt zwei Möglichkeiten, den Referenzpfad des Pakets zu schreiben, nämlich den vollständigen Pfadimport und den relativen Pfadimport. 🎜🎜🎜Vollständiger Pfadimport🎜🎜🎜Der absolute Pfad des Pakets ist der Speicherpfad des Pakets nach GOROOT/src/ oder GOPATH/src/, wie unten gezeigt: 🎜
// 相对路径导入
import "../a"
Nach dem Login kopieren
🎜Die Bedeutung des obigen Codes ist wie folgt: 🎜🎜🎜🎜Testpaket ist self Der Quellcode des definierten Pakets befindet sich im Verzeichnis GOPATH/src/lab/test; der Quellcode des 🎜🎜🎜🎜Treiberpakets befindet sich im Verzeichnis GOROOT/src/database/sql /driver-Verzeichnis; der Quellcode des 🎜🎜🎜🎜sql-Pakets befindet sich im Verzeichnis GOROOT/src /database/sql. 🎜🎜🎜🎜🎜Relativer Pfadimport🎜🎜🎜Relative Pfade können nur zum Importieren von Paketen unter GOPATH verwendet werden, und Standardpakete können nur mit dem vollständigen Pfad importiert werden. 🎜🎜Zum Beispiel ist der Pfad von Paket a GOPATH/src/lab/a und der Pfad von Paket b ist GOPATH/src/lab/b. Wenn Sie Paket a in Paket b importieren, können Sie den relativen Pfadimport verwenden Verfahren. Ein Beispiel lautet wie folgt: 🎜
// 全路径导入
import "lab/a"
Nach dem Login kopieren
🎜Natürlich können Sie auch den obigen vollständigen Pfadimport verwenden, wie unten gezeigt: 🎜rrreee🎜🎜🎜Paketladen🎜🎜🎜🎜Durch die vorherige Studienreihe glaube ich, dass jeder einen hat Allgemeines Verständnis des Starts und Starts von Go-Programmen. Während des Ladevorgangs initialisiert das Go-Boot-Programm das gesamte Programmpaket, bevor die Hauptfunktion des Hauptpakets ausgeführt wird. Der gesamte Ausführungsprozess ist in der folgenden Abbildung dargestellt. 🎜🎜🎜🎜Bild: Initialisierung des Go-Pakets 🎜🎜Die Initialisierung des Go-Sprachpakets weist die folgenden Merkmale auf: 🎜
  • Das Paketinitialisierungsprogramm beginnt mit dem Paket, auf das die Hauptfunktion verweist, sucht Schritt für Schritt nach Paketreferenzen, bis es ein Paket findet, das nicht auf andere Pakete verweist, und generiert schließlich einen gerichteten azyklischen Graphen von Paketreferenzen.

  • Der Go-Compiler wandelt den gerichteten azyklischen Graphen in einen Baum um und initialisiert das Paket dann Schicht für Schicht, beginnend mit den Blattknoten des Baums.

  • Der Initialisierungsprozess eines einzelnen Pakets ist wie in der Abbildung oben dargestellt. Zuerst werden Konstanten initialisiert, dann globale Variablen und schließlich wird die Init-Funktion des Pakets ausgeführt.

Zusammenfassung der Verwendung von Golang-Paketen

Die Quellcodeorganisation der Go-Sprache erfolgt in Form von Paketen. Die Hauptfunktion der Go-Sprache kann nur vom System im Hauptpaket ausgeführt werden.

【Verwandte Empfehlungen: Go-Video-Tutorial, Programmierunterricht

Das obige ist der detaillierte Inhalt vonWas ist ein Paket in der Go-Sprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage