Heim Backend-Entwicklung Golang Beherrschen Sie die Fähigkeiten im Umgang mit Golang-Paketen

Beherrschen Sie die Fähigkeiten im Umgang mit Golang-Paketen

Jan 16, 2024 am 11:13 AM

Beherrschen Sie die Fähigkeiten im Umgang mit Golang-Paketen

Um ein umfassendes Verständnis der Verwendung von Golang-Paketen zu erlangen, sind spezifische Codebeispiele erforderlich.

In der Go-Sprache ist ein Paket die Grundeinheit zum Organisieren und Verwalten von Code. Ein Paket kann mehrere Go-Quelldateien (mit der Erweiterung .go) enthalten, die zusammen eine funktionale Einheit bilden. Durch die Verwendung von Paketen können wir Code besser organisieren, die Wiederverwendbarkeit von Code verbessern und die Zusammenarbeit im Team erleichtern. In diesem Artikel erfahren Sie, wie Sie die Verwendung von Golang-Paketen genau verstehen, und stellen spezifische Codebeispiele bereit.

  1. Import von Paketen

Wenn Sie in der Go-Sprache Code in einem anderen Paket verwenden möchten, müssen Sie dieses Paket zuerst importieren. Pakete können über das Schlüsselwort import importiert werden. Sie können Standardbibliothekspakete oder benutzerdefinierte Pakete importieren. Zum Beispiel:

1

2

3

4

5

import (

    "fmt"

    "log"

    "github.com/example/mypackage"

)

Nach dem Login kopieren

Beim Importieren eines Pakets können Sie dem importierten Paket auch einen Alias ​​geben. Zum Beispiel:

1

2

3

4

5

import (

    "fmt"

    mylog "log"

    mypkg "github.com/example/mypackage"

)

Nach dem Login kopieren

Durch die Verwendung von Aliasen kann das Problem von Paketnamenkonflikten vermieden und die Absicht des Codes besser ausgedrückt werden.

  1. Sichtbarkeit von Paketen

In der Go-Sprache können Bezeichner (Variablen, Funktionen, Typen usw.) in einem Paket exportiert (sichtbar) oder nicht exportiert werden. Wenn der Bezeichner mit einem Großbuchstaben beginnt, wird er exportiert und kann von anderen Paketen verwendet werden. Wenn er mit einem Kleinbuchstaben beginnt, wird er nicht exportiert und kann nur innerhalb des aktuellen Pakets verwendet werden.

Angenommen, wir haben ein Paket mit dem Namen mypackage, das eine Funktion und eine Variable definiert:

1

2

3

4

5

6

7

package mypackage

 

func Add(a, b int) int {

    return a + b

}

 

var Name string = "mypackage"

Nach dem Login kopieren

Verwenden Sie dieses Paket in einem anderen Paket:

1

2

3

4

5

6

7

8

9

10

11

12

13

package main

 

import (

    "fmt"

    "github.com/example/mypackage"

)

 

func main() {

    sum := mypackage.Add(2, 3)

    fmt.Println(sum) // 输出:5

 

    fmt.Println(mypackage.Name) // 编译错误,Name是未导出的

}

Nach dem Login kopieren
  1. Initialisierung des Pakets

In der Go-Sprache wird das Paket initialisiert automatisch ausgeführt werden, wenn das Programm ausgeführt wird. Der Initialisierungsvorgang eines Pakets wird nur einmal durchgeführt, unabhängig davon, wie oft das Paket importiert wird. Pakete werden in Abhängigkeitsreihenfolge initialisiert. Wenn beispielsweise Paket A von Paket B abhängt, wird Paket B initialisiert, bevor Paket A initialisiert wird.

Der Initialisierungsvorgang eines Pakets umfasst hauptsächlich:

  • Variablen auf Paketebene initialisieren
  • Ausführen der Init-Funktion auf Paketebene

Die Aufrufsequenz ist wie folgt:

  1. Zuerst Variablen auf Paketebene initialisieren und initialisieren sie in der Reihenfolge der Erklärung.
  2. Führen Sie dann die Init-Funktion auf Paketebene in der Reihenfolge der Deklaration aus.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

package mypackage

 

import "fmt"

 

var Var1 = 10

var Var2 = calculateVar2()

 

func calculateVar2() int {

    return Var1 * 2

}

 

func init() {

    fmt.Println("mypackage initialization")

    fmt.Println(Var1, Var2)

}

 

func Add(a, b int) int {

    return a + b

}

Nach dem Login kopieren

Verwenden Sie dieses Paket im Hauptprogramm:

1

2

3

4

5

6

7

8

9

10

package main

 

import (

    "github.com/example/mypackage"

)

 

func main() {

    sum := mypackage.Add(2, 3)

    println(sum) // 输出:5

}

Nach dem Login kopieren

Führen Sie dieses Programm aus und Sie erhalten die folgende Ausgabe:

1

2

3

mypackage initialization

10 20

5

Nach dem Login kopieren
  1. Testen von Paketen

In der Go-Sprache können wir Testcode für jedes Paket schreiben und Testcode kann im selben Paket wie normale Codedateien platziert werden. Der Dateiname des Testcodes muss mit _test.go enden, damit das Go-Sprachtesttool ihn erkennen kann.

Der Name der Testfunktion muss mit Test beginnen und einen Parameter vom Typ *testing.T erhalten. Beispiel:

1

2

3

4

5

6

7

8

9

10

11

12

package mypackage

 

import (

    "testing"

)

 

func TestAdd(t *testing.T) {

    sum := Add(2, 3)

    if sum != 5 {

        t.Errorf("Add(2, 3) = %d; want 5", sum)

    }

}

Nach dem Login kopieren

Führen Sie den Befehl go test im Stammverzeichnis des Pakets aus, um alle Tests des Pakets auszuführen:

1

$ go test

Nach dem Login kopieren

Wenn der Test erfolgreich ist, wird Folgendes ausgegeben:

1

2

PASS

ok      mypackage   0.003s

Nach dem Login kopieren

Wenn ein Test fehlschlägt, werden Fehlerinformationen angezeigt Ausgabe.

Zusammenfassend müssen Sie die folgenden Punkte beachten, um die Verwendung von Golang-Paketen genau zu verstehen:

  • Sie können dem Paket beim Importieren einen Alias ​​geben, um Konflikte mit Paketnamen zu vermeiden.
  • Die Sichtbarkeitsregeln von Paketen sollten klar sein, exportierte Kennungen können von anderen Paketen verwendet werden.
  • Die Paketinitialisierung wird in Abhängigkeitsreihenfolge durchgeführt.
  • Sie können Testcode für jedes Paket schreiben und den Test über den Befehl go test ausführen.

Ich hoffe, dass die Leser durch die Einführung dieses Artikels ein tieferes Verständnis für die Verwendung von Golang-Paketen erhalten und diese flexibel in der tatsächlichen Entwicklung einsetzen können.

Das obige ist der detaillierte Inhalt vonBeherrschen Sie die Fähigkeiten im Umgang mit Golang-Paketen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Hot-Tools-Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich? GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich? Mar 03, 2025 pm 05:17 PM

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go? Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go? Mar 10, 2025 pm 05:38 PM

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren? Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren? Mar 03, 2025 pm 05:22 PM

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren? Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren? Mar 10, 2025 pm 03:20 PM

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen? Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen? Mar 10, 2025 pm 05:36 PM

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

Wie kann ich Linter und statische Analyse -Tools verwenden, um die Qualität und Wartbarkeit meines GO -Codes zu verbessern? Wie kann ich Linter und statische Analyse -Tools verwenden, um die Qualität und Wartbarkeit meines GO -Codes zu verbessern? Mar 10, 2025 pm 05:38 PM

Wie kann ich Linter und statische Analyse -Tools verwenden, um die Qualität und Wartbarkeit meines GO -Codes zu verbessern?

Wie schreibe ich Dateien in Go Language bequem? Wie schreibe ich Dateien in Go Language bequem? Mar 03, 2025 pm 05:15 PM

Wie schreibe ich Dateien in Go Language bequem?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache? Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache? Mar 03, 2025 pm 05:18 PM

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?

See all articles