Inhaltsverzeichnis

Go

siehe auch V, es fühlt sich an wie Go, jedoch ohne GC (wie Rust) und kann (genauso wie Rust) Speichersichere Programme erstellen.

Variablen werden mit dem Schlüsselwort »var« deklariert, gefolgt vom Variablennamen und dem Typ, also umgekehrt wie bei C, C++ oder Java:

var x float64

Variablennamen können mit jedem Zeichen beginnen, das im Unicode-Standard als Buchstabe gilt, jedoch sollte man es hierbei vernünftigerweise nicht übertreiben. Mit dem Operator »:=« lassen sich Variablen in einem Aufwasch definieren und initialisieren. Das Schlüsselwort »var« kann man hierbei, ebenso wie meist die Typangabe weglassen:

i := 1
pi := 3.142

Auch bei Schleifen haben die Go-Entwickler radikal ausgemistet, was bei näherer Betrachtung durchaus sinnvoll erscheint, denn all die Whiles, Dos und Foreachs lassen sich meist einfach umformulieren. In Go gibt es nur noch die gute alte For-Schleife (Verzicht auf Semikolons am Zeilenende und runde Klammern bei if und for):

for i, route := range router.routes {
    if route.pattern == nil { 
        continue
    }
}

Go erzwingt übrigens bestimmte Formatierungen wie geschweifte Klammern am Zeilenende.

Installation

FreeBSD 13.1

> pkg install lang/go
> go version
go version go1.17.6 freebsd/amd64

Debian 11

> echo "deb http://deb.debian.org/debian $(lsb_release -cs)-backports main contrib non-free" >> /etc/apt/sources.list
> apt update

> apt search golang
> apt search golang-1

> apt install golang-1.19-go git

> ln -s /usr/lib/go-1.19/bin/gofmt /usr/bin/
> ln -s /usr/lib/go-1.19/bin/go /usr/bin/
> go version
go version go1.19.3 linux/amd64

Ubuntu 12.04

> aptitude install golang

Nach der Installation finden sich auf der Festplatte, je nach Prozessorarchitektur, die Befehle »6a« , »6c« , »6g« und »6l« oder analoge Befehle mit den Ziffern 5 oder 8. Die 6er-Tools sind für AMD64, die 5er-Reihe für 368 und die 8er für ARM. Die seltsamen Namen sind ebenfalls ein Erbe von Plan9, das über diese Ziffern die Prozessorarchitekturen identifiziert.

Praktischerweise muss man sich um diese Details in der Praxis nicht kümmern, sondern kann stattdessen einfach das Frontend »go« verwenden. Es sei jedoch noch erwähnt, dass die vom Compiler erzeugten Object-Dateien mit der Endung ».6« Referenzen auf alle verwendeten Module enthält, die der Linker dann verwendet. Damit fällt das Problem weg, dass man zusätzlich zum Einbinden von Header-Dateien auch noch die passenden Libraries finden und beim Linken angeben muss wie von C und C++ bekannt. Wenn sich ein Go-Programm kompilieren lässt, kann der Compiler es auch linken. Die altbekannten Linker-Probleme gehören damit der Vergangenheit an. Auch die Aufgabe von Makefiles übernimmt »go« .

Wer Go richtig installiert hat, sollte auf der Kommandozeile den Go-Befehl ausführen können:

> go version
go version go1

Wenn die Go-Installation nicht automatisch im »PATH« der ausführbaren Dateien enthalten ist, sollte man die Umgebungsvariable »GOROOT« auf das Elternverzeichnis setzen und dann »$GOROOT/bin« in den »PATH« aufnehmen.

Weil Go-Programme sich wirklich schnell übersetzen lassen, eignen sie sich mit Einschränkungen auch für den Aufruf als Skript, also eine Art selbstgestrickte Just-in-Time-Compilation. Das Tool Gorun unterstützt diesen Prozess.

IDE (Entwicklungsumgebung)

Remote Procedure Call - RPC

Beispiel-Programme

RegEx mit Go