Heim  >  Artikel  >  Backend-Entwicklung  >  Bautechniken: Ein tiefer Einblick in Go

Bautechniken: Ein tiefer Einblick in Go

Linda Hamilton
Linda HamiltonOriginal
2024-09-30 18:11:03698Durchsuche

Building Techniques: A Deep Dive into Go

Go war eine wichtige Sprache in meiner persönlichen Karriere. Als ich CTO bei Soundcast war, habe ich damit einen soliden Audio-AdServer und SSP aufgebaut. Go macht Vernetzung und Parallelität so einfach, dass es sich wie Betrug anfühlt. Und das alles mit einer wirklich guten Leistung, die perfekt für die Aufgabe war, die wir zu erledigen hatten.

In Teil 1 haben wir die Grundlagen der Erstellungsphase von Software vorgestellt. In diesem Artikel werden wir dies anhand einer Sprache, die mir besonders am Herzen liegt, noch relevanter machen. Obwohl die Grundlagen der Softwareerstellung in allen Sprachen ähnlich sind, verfügt jedes Sprachökosystem über seine eigenen einzigartigen Tools und Praktiken.

Lassen Sie uns diese ohne weitere Umschweife erkunden, mit besonderem Fokus auf Go.

Gos Ansatz zum Bauen

Go wurde von Google entwickelt und verfolgt einen einzigartigen Ansatz beim Erstellen, bei dem Einfachheit und Geschwindigkeit im Vordergrund stehen.

Ein Befehl

Go wird mit einem Build-Befehl geliefert. Dieser Befehl kompiliert die durch die Importpfade benannten Pakete zusammen mit ihren Abhängigkeiten, installiert die Ergebnisse jedoch nicht. Es generiert eine ausführbare Datei.

Beispiel:

go build main.go

Cross-Compilation in Go

Eine der nützlichsten Funktionen des Go-Compilers ist die Möglichkeit, eine Kreuzkompilierung bemerkenswert einfach durchzuführen. Sie müssen lediglich die Umgebungsvariablen GOOS und GOARCH so einstellen, dass sie auf die gewünschten Plattformen abzielen.

Beispiel:

GOOS=windows GOARCH=amd64 go build main.go

Dadurch wird eine ausführbare Datei für Windows unter einer amd64-Architektur erstellt.

Go-Module

Der Go-Mod kam etwas spät, da er mit Go 1.11 eingeführt wurde, aber es handelt sich um ein integriertes Abhängigkeitsverwaltungssystem. Zuvor mussten wir alle unsere Go-Projekte in einem speziellen Verzeichnis auf unserem Computer namens {$GOPATH} ablegen. Obwohl es funktioniert hat, gibt uns der Go-Mod jetzt mehr Flexibilität, was großartig ist!

Die Verwendung ist ziemlich einfach, wie alles in Go.

  • go mod init initialisiert ein neues Modul.
  • Die Datei go.mod verfolgt Abhängigkeiten und ihre Versionen.

Sie können eine bedingte Kompilierung hinzufügen, indem Sie Build-Tags verwenden, aber die interessanteste Funktion ist meiner Meinung nach, dass Go die Build-Ausgabe automatisch zwischenspeichert, um nachfolgende Builds zu beschleunigen (natürlich können Sie den Cache bei Bedarf leeren).

Fortgeschrittene Go-Building-Techniken

Ressourcen einbetten

Wenn Sie statische Dateien haben, die Sie in Ihre Binärdatei einbinden möchten, können Sie die Direktive //go:embed verwenden.

Rassenerkennung

Go ist großartig, wenn es um Parallelität geht. Mit seinem System aus Goroutinen und Kanälen für die Kommunikation zwischen ihnen können Entwickler die Arbeitslast der Software problemlos auf verschiedene Kerne aufteilen. Aber es ist auch leicht, Dinge durcheinander zu bringen und „Rennen“ zu schaffen.

Ein Datenwettlauf tritt auf, wenn zwei Goroutinen gleichzeitig auf dieselbe Variable zugreifen und mindestens einer der Zugriffe ein Schreibzugriff ist. Weitere Informationen finden Sie im The Go Memory-Modell.

Der Go-Compiler kann Ihnen dabei helfen, sie zu finden!

Verwenden Sie die Rennflagge, um Rennbedingungen zu erkennen:

go build -race main.go

Profilierung und Optimierung

Eines der wichtigsten Dinge, die mir an Go gefallen, ist die Leistung. Diese Sprache liefert ohne großen Aufwand solide Ergebnisse. Wenn Sie aber noch einen Schritt weiter gehen möchten, bietet Ihnen das Go-Ökosystem auch einige wirklich großartige Tools, mit denen Sie Ihre Leistung messen und Ihren Code optimieren können.

Ich werde nicht auf die Details eingehen, aber wenn Sie in das Thema eintauchen möchten, lade ich Sie ein, dieses Juwel zu lesen: https://www.practical-go-lessons.com/chap-34-benchmarks

Benutzerdefinierte Build-Modi

Manchmal erstellen Sie keine Software, sondern beispielsweise ein Plugin oder eine Bibliothek. Das Go-Team steht Ihnen zur Seite. In Go können Sie den Buildmodus definieren, um das gewünschte Ergebnis zu erhalten!

  • Erstellen Sie gemeinsam genutzte Bibliotheken: go build -buildmode=c-shared
  • Plugins erstellen: go build -buildmode=plugin
  • Die vollständige Liste erhalten Sie unter https://pkg.go.dev/cmd/go#hdr-Build_modes

Wie Sie sehen, bietet Go in seinem Compiler und Ökosystem viele Funktionen, die es Entwicklern ermöglichen, das Beste aus der Go-Technologie herauszuholen.

Und das war's für heute. Ich werde diese Woche einen weiteren Artikel veröffentlichen, der die Erstellungstechniken für TypeScript vorstellt. Abonnieren Sie ihn also oder folgen Sie ihm, wenn Sie ihn nicht verpassen möchten!

Bis dahin viel Spaß beim Programmieren!

Das obige ist der detaillierte Inhalt vonBautechniken: Ein tiefer Einblick in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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