link

Logo for Markus Rennings

Go

Ich hab mir überlegt, dass ich mir nebenbei noch die Programmiersprache »Go« (oder öfters auch Golang genannt) ansehe. Und dazu dann in losen Abständen hier etwas dazu schreiben werde. Es wird wohl kein Tutorial im eigentlichen Sinne, aber vielleicht nützt es wem ja auch zum Einstieg.

#Warum?

Warum ich Go lernen will? Gute Frage. Ich bin generell bereit, neues zu lernen – und das macht mir auch Spaß. Neben JavaScript und Python wollte ich mir eine weitere Sprache anschauen, die auch im DevOps-/Cloud-Umfeld eingesetzt wird. Ich hatte anfangs auch an Rust gedacht, mich dann aber doch für Go entschieden, auch aus dem Grund, da es häufig als »cloud-native«-Sprache bezeichnet wird.

#Was ist Go?

Go ist eine 2009 erschienene, von Google Inc. (Rob Pike, Ken Thompson, Robert Griesemer) entwickelte statisch-typisierte, kompilierbare Programmiersprache.

#Installation

Ich arbeite auf einem (K)Ubuntu-System, da ist die Installation relativ einfach: Entweder direkt über Apt mittels apt install golang, oder über snap (snap install go --classic). Über snap gibt es die etwas aktuellere Version (zur Zeit des Schreibens 1.21.1, über apt »nur« 1.20).

Für andere Distributionen wird sich sehr wahrscheinlich auch ein Blick in den jeweiligen Paketmanager lohnen. Ansonsten bleibt – wie auch für andere Systeme – immer noch der Weg über die offizielle Download-Seite. Auf der Seite sind dann auch die entsprechenden Installationsanweisungen verlinkt.

#Hallo Welt

Als kurzes Code-Beispiel möchte ich hier jetzt noch das obligatorische »Hello World« anfügen, damit man einen Eindruck der Syntax erhält.

package main

import "fmt"

func main() {
 fmt.Println("Hallo Welt")
}

Jede .go-Datei gehört zu einem Package, somit ist die erste Zeile Pflich für alle Go-Programme. In Zeile 3 wird das Package »fmt« eingebunden, was u.a. die Println()-Funktion zur Verfügung stellt. Funktionen, die mit einem Großbuchstaben beginnen werden übrigens exportiert (also kein »module.exports« o.ä. nötig). Das eigentliche Programm beginnt dann mit der Funktionsdefinition. main() ist der Standardeinstiegspunkt.

Ausführen kann man das Programm dann mit go run <filename>, oder man kompiliert es mit go build <filename> in eine ausführbare Datei. Da diese Programme statisch gelinkt und auch nicht »stripped«, also mit Debug-Informationen sind, sind sie erst mal relativ groß. So ist das HelloWorld-Beispiel oben nach dem Kompilieren ca. 1,8 MB groß. Nachdem ich mit strip die Debug-Symbols entfernt habe, bleiben immer noch ca. 1,2 MB stehen – aber, wie gesagt, statisch gelinkt.