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.