Wei-Meng Lee

Go programmieren für Dummies


Скачать книгу

$ go build

      Wenn Sie nun in das Verzeichnis Kapitel 1 schauen, befindet sich dort eine neue Datei namens Kapitel_1 (Kapitel_1.exe unter Windows).

      Um diese Datei unter macOS auszuführen, geben Sie Folgendes im Terminal ein:

       $ ./Kapitel_1

      Unter Windows verwenden Sie folgenden Befehl:

       C:\users\IhrName\Kapitel 1>Kapitel_1

      Sie sollten nun eine Ausgabe ähnlich der folgenden sehen:

       Hallo Welt! 2020-10-01 12:01:13.412568 +0800 +08 m=+0.000365532

      Kompilieren von Programmen für mehrere Betriebssysteme

      Bei der Installation von Go werden automatisch mehrere Go-Umgebungsvariablen eingerichtet, damit Ihre Go-Programme korrekt funktionieren. Insbesondere erkennt das Installationsprogramm bestimmte Werte der Host-Architektur und des genutzten Betriebssystems, die für die Umgebungsvariablen GOHOSTARCH beziehungsweise GOHOSTOS nötig sind. Die Werte dieser zwei Variablen geben die Zielplattform an, für die Ihre Programme kompiliert werden.

      Wenn Sie sich diese Werte der Go-Umgebungsvariablen anzeigen lassen möchten, nutzen Sie den Befehl env:

       $ go env GOARCH="amd64" GOBIN="" GOCACHE="/Users/weimenglee/Library/Caches/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" PKG_CONFIG="pkg-config"

Betriebssystem GOOS GOARCH
macOS darwin amd64
Linux linux amd64
Windows windows amd64

      Tabelle 1.1: Umgebungsvariablen für verschiedene Betriebssysteme

      Um ein Programm für macOS zu kompilieren, nutzen Sie die folgenden Befehle und Optionen:

       $ GOOS=darwin GOARCH=amd64 go build -o Kapitel_1-mac

      

Wenn Go in naher Zukunft nativ auf Apple Silicon portiert wird, wäre der Wert von GOARCH entsprechend arm64.

      Um ein Programm für Windows OS zu kompilieren, sind folgende Befehle und Optionen nötig:

       $ cd ~/"Kapitel 1" $ GOOS=windows GOARCH=amd64 go build -o Kapitel_1-windows.exe

      

Über die Option -o (kurz für Output) können Sie einen Namen für die ausführbare Datei angeben.

      Der vorgenannte Befehl kompiliert das Paket im Verzeichnis Kapitel 1 für Windows und speichert die ausführbare Datei als Kapitel_1-windows.exe.

      Um ein Programm für Linux zu kompilieren, nutzen Sie folgende Befehle und Optionen:

       $ GOOS=linux GOARCH=amd64 go build -o Kapitel_1-linux

      

Falls Sie mit Go auf dem Raspberry Pi arbeiten, nutzen Sie für GOARCH den Wert arm64.

      Wenn auf Ihrem Computer macOS oder Linux läuft, können Sie die für die jeweilige Plattform erstellten ausführbaren Dateien mit dem file-Befehl überprüfen:

       $ file Kapitel_1-mac Kapitel_1-mac: Mach-O 64-bit executable x86_64 $ file Kapitel_1-windows.exe Kapitel_1-windows.exe: PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows $ file Kapitel_1-linux Kapitel_1-linux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=bSETwZgNDR5vlulRHnzw/KNpENRt9Hipd8Nu7HGDg/v38ZPzDs35yMw33hUxoz/Y_cNfU8fID2cCtz36hCq, not stripped

      Beim Erlernen einer neuen Programmiersprache ist es oft hilfreich, einen Vergleich mit anderen Programmiersprachen anzustellen, die Sie vielleicht schon kennen. Im Idealfall helfen Ihnen Ihre vorhandenen Kenntnisse auch bei der neuen Sprache.

      In diesem Abschnitt vergleiche ich Go mit zwei branchenweit besonders häufig verwendeten Programmiersprachen, nämlich mit Java und Python. Gelegentlich ist auch ein Vergleich mit C sinnvoll, da Go syntaktische Ähnlichkeiten zu dieser Sprache aufweist. Zudem wird Go oft nachgesagt, es vereine die Geschwindigkeit von C mit der Produktivität von Python.

      

Wenn Sie noch keine dieser Programmiersprachen in Ihrem Repertoire haben, ist das nicht schlimm. Alle hier erwähnten Funktionen werden in den weiteren Kapiteln dieses Buches ausführlich vorgestellt.

      Syntax

      In Sachen Syntax weist Go mehr Ähnlichkeiten mit den Programmiersprachen C und Java auf, bei denen Codeblöcke in geschweifte Klammern gesetzt werden. Python hingegen rückt die Programmzeilen ein, um verschiedene Codeblöcke auch visuell voneinander zu trennen.

      Ebenso wie Python stellt Go Funktionen in den Mittelpunkt, während sich bei Java alles um Klassen dreht und sogar Funktionen in Klassen eingeschlossen werden müssen.

      Im Gegensatz zu Python und Java bietet Go keine Unterstützung für die objektorientierte Programmierung (OOP) und Vererbung. Dafür gibt es in Go zur Strukturierung sogenannte Interfaces und Structs, die genau wie Klassen funktionieren.

      Wie Java nutzt auch Go die statische Typisierung. Python ist eine dynamisch typisierte Sprache.

      Kompilierung

      Während Python und Java in Bytecode kompiliert werden, der dann übersetzt und auf einer virtuellen Maschine ausgeführt wird, liefert Go beim Kompilieren direkt Maschinencode. Aus diesem Grund ist Go besonders leistungsfähig.

      Genau wie Python und Java unterstützt auch Go die automatische Speicherbereinigung (Garbage Collection). Bei diesem Vorgang zur Speicherverwaltung sucht der Garbage Collector nach Objekten, die von einem Programm nicht mehr benötigt werden, um den dadurch belegten Speicherplatz wieder freizugeben.

      Python verschlingt eine