Kapitel 1. Erste Schritte

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Go ist eine Allzweckprogrammiersprache mit fortschrittlichen Funktionen und einer sauberen Syntax. Aufgrund ihrer breiten Verfügbarkeit auf einer Vielzahl von Plattformen, ihrer robusten, gut dokumentierten allgemeinen Bibliothek und ihrem Fokus auf gute Softwareentwicklung ist Go eine großartige Programmiersprache zum Erlernen.

Dieses Buch setzt keine Vorkenntnisse in Go voraus und ist als einfacher Einstieg in die Sprache gedacht. Alle Kernfunktionen der Sprache werden in kurzen, prägnanten Kapiteln behandelt, die dich darauf vorbereiten sollen, echte Go-Programme zu schreiben und einige der fortgeschritteneren Ressourcen zu nutzen, die zu dieser Sprache verfügbar sind (Online-Dokumentation, Bücher, Vorträge usw.).

Obwohl dieses Buch für unerfahrene Programmierer/innen geeignet ist, wirst du, wenn du noch nie programmiert hast, wahrscheinlich zu große Schwierigkeiten haben, dem Stoff zu folgen. Bevor du dich in die Materie vertiefst, könntest du ein allgemeineres Programmierbuch zu Rate ziehen. Aber ganz ehrlich: Die meisten Schüler/innen brauchen die praktische, persönliche Unterstützung, die du in einem Klassenzimmer oder im persönlichen Gespräch mit einem erfahrenen Entwickler bekommst.

Maschine einrichten

Dieses Buch enthält viele Codebeispiele und Übungen. Um die besten Ergebnisse zu erzielen, solltest du versuchen, diese Beispiele auf deinem eigenen Computer auszuführen, während du dich durch die einzelnen Kapitel arbeitest.

Aber bevor du dein erstes Go-Programm schreiben kannst, musst du ein paar Dinge einrichten.

Text-Editoren

Go ist eine sehr gut lesbare, prägnante Sprache, so dass jeder Texteditor für die Bearbeitung von Dateien geeignet ist. Für viele gängige Editoren gibt es Plug-ins, die ein paar hilfreiche Funktionen (wie Autovervollständigung und Formatierung beim Speichern) hinzufügen, aber diese Plug-ins sind nicht notwendig, um die Sprache zu lernen. Wenn du dir nicht sicher bist, was du verwenden sollst, empfehle ich dir Atom von GitHub - es ist kostenlos, plattformübergreifend und lässt sich einfach von der Atom-Website installieren.

Das Terminal

Go ist eine kompilierte Sprache und wie viele andere Sprachen macht sie viel Gebrauch von der Kommandozeile. Wenn du aus einer Sprache kommst, in der die meisten Dinge über eine IDE laufen (z. B. Java oder C#), ist das vielleicht etwas einschüchternd, aber zum Glück sind die Go-Tools ziemlich einfach zu benutzen. Zur Erinnerung: So gelangst du zu einem Terminal:

Windows
Unter Windows kannst du das Terminal (auch als Eingabeaufforderung bekannt) aufrufen, indem du die Windows-Taste + R drückst (halte die Windows-Taste gedrückt und drücke dann R), cmd.exe eintippst und auf Enter drückst.
OS X
Unter OS X kannst du das Terminal erreichen, indem du zu Finder → Programme → Dienstprogramme → Terminal navigierst.

Umwelt

Umgebungsvariablen sind ein Mechanismus, den dein Betriebssystem zur Verfügung stellt, um das Verhalten eines Programms zu ändern, ohne dass du es selbst ändern musst. Eine Umgebung ist eine Sammlung dieser Variablen, von denen jede einen Namen und einen entsprechenden Wert hat. So gibt es zum Beispiel die Umgebungsvariable TEMP, die den Ort eines Verzeichnisses auf deinem Computer speichert, in dem temporäre Dateien abgelegt werden.

Das Go-Toolset verwendet eine Umgebungsvariable namens GOPATH, um Go-Quellcode zu finden. Du kannst die Variable GOPATH auf jeden beliebigen Wert setzen, aber der Einfachheit halber setzen wir sie so, dass sie mit deinem Heimatverzeichnis übereinstimmt:

Windows

Unter Windows werden die Benutzerinformationen normalerweise unter C:\Benutzer\<BENUTZERNAME> gespeichert , wobei <BENUTZERNAME> durch deinen Benutzernamen ersetzt wird (z. B. C:\Benutzer\alice). Windows verfügt über eine vordefinierte Umgebungsvariable namens USERPROFILE, die du verwenden kannst, um deine GOPATH festzulegen.

Öffne ein neues Terminalfenster und gib Folgendes ein:

setx GOPATH %USERPROFILE%

Wenn du eine Windows-Version vor Vista verwendest, funktioniert dieser Befehl möglicherweise nicht. Du kannst dann auch Umgebungsvariablen setzen, indem du zu Systemsteuerung → System → Erweitert → Umgebungsvariablen navigierst.

OS X

Unter OS X werden die Informationen zum Benutzer normalerweise in /Users/<USERNAME> gespeichert , wobei <USERNAME> durch deinen Benutzernamen ersetzt wird (z. B. /Users/alice). Unter OS X werden wir GOPATH mithilfe einer speziellen Initialisierungsdatei für das Terminal namens .bash_profile einstellen.

Öffne ein Terminal und gib Folgendes ein:

echo 'export GOPATH=$HOME\n' >> ~/.bash_profile

Schließe das Terminal, öffne es erneut und gib Folgendes ein:

env

Neben vielen anderen Umgebungsvariablen solltest du einen Eintrag für GOPATH sehen.

Geh

Go ist sowohl der Name der Programmiersprache als auch der Name für das Toolset, mit dem du Go-Programme erstellen und mit ihnen arbeiten kannst. Bevor du mit Go arbeiten kannst, musst du das Go-Toolset installieren.

Lade das Installationsprogramm für deine Plattform von golang.org/dl herunter und führe es aus.

Um zu überprüfen, ob alles funktioniert, öffne ein Terminal und gib Folgendes ein:

go version

Du solltest folgendes sehen (deine Versionsnummer und dein Betriebssystem können etwas anders aussehen):

go version go1.5 windows/amd64

Wenn du eine Fehlermeldung erhältst, dass der Befehl nicht erkannt wird, versuche deinen Computer neu zu starten.

Das Go-Toolset besteht aus mehreren verschiedenen Befehlen und Unterbefehlen. Du kannst eine Liste dieser Befehle abrufen, indem du eintippst:

go help

Wenn Go installiert ist und funktioniert, hast du jetzt alles, was du brauchst, um dein erstes Go-Programm zu schreiben.

Dein erstes Programm

Traditionell wird das erste Programm, das du in einer Programmiersprache schreibst, als "Hello, World"-Programm bezeichnet - ein Programm, das einfach Hello, World auf deinem Terminal ausgibt. Lass uns eines mit Go schreiben.

Erstelle zunächst einen neuen Ordner, in dem du unser "Hello, World"-Programm speichern kannst. Erstelle einen Ordner namens ~/src/golang-book/chapter1. Im Terminal kannst du dazu die folgenden Befehle eingeben:

Unter Windows
md src\golang-book\chapter1
Unter OS X
mkdir -p src/golang-book/chapter1

Öffne deinen Texteditor, erstelle eine neue Datei und gib Folgendes ein:

package main

import "fmt"

// this is a comment

func main() {
    fmt.Println("Hello, World")
}

Achte darauf, dass deine Datei mit der hier gezeigten identisch ist und speichere sie als main.go in dem Ordner, den wir gerade erstellt haben. Öffne ein neues Terminal und gib Folgendes ein:

cd src/golang-book/chapter1
go run main.go

Du solltest Hello, World in deinem Terminal sehen. Der Befehl go run nimmt die nachfolgenden Dateien (durch Leerzeichen getrennt), kompiliert sie zu einer ausführbaren Datei, die in einem temporären Verzeichnis gespeichert wird, und führt das Programm dann aus. Wenn du Hello, World nicht angezeigt bekommst, hast du vielleicht einen Fehler bei der Eingabe des Programms gemacht. Der Go-Compiler wird dir Hinweise geben, wo der Fehler liegt. Wie die meisten Compiler ist auch der Go-Compiler extrem pedantisch und hat keine Toleranz für Fehler.

Wie man ein Go-Programm liest

Schauen wir uns dieses Programm genauer an:

package main

import "fmt"

// this is a comment

func main() {
    fmt.Println("Hello, World")
}

Go-Programme werden von oben nach unten und von links nach rechts gelesen (wie ein Buch). In der ersten Zeile steht dies:

package main

Dies ist bekannt als eine Paketdeklaration, und jedes Go-Programm muss damit beginnen. Pakete sind Go's Art, Code zu organisieren und wiederzuverwenden. Es gibt zwei Arten von Go-Programmen: ausführbare Programme und Bibliotheken. Ausführbare Anwendungen sind die Art von Programmen, die wir direkt über das Terminal ausführen können (unter Windows enden sie auf .exe). Bibliotheken sind Codesammlungen, die wir zusammenpacken, damit wir sie in anderen Programmen verwenden können. Wir werden uns später ausführlicher mit Bibliotheken befassen; im Moment solltest du nur sicherstellen, dass du diese Zeile in jedes Programm einfügst, das du schreibst.

Die nächste Zeile ist leer. Computer stellen Zeilenumbrüche mit einem Sonderzeichen (oder mehreren Zeichen) dar. Zeilenumbrüche, Leerzeichen und Tabulatoren werden als Whitespace bezeichnet (weil man sie nicht sehen kann). Go kümmert sich meistens nicht um Leerzeichen - wir benutzen sie, um Programme leichter lesbar zu machen (du könntest diese Zeile entfernen und das Programm würde sich genau so verhalten).

In der folgenden Zeile sehen wir dies:

import "fmt"

Mit dem Schlüsselwort import binden wir Code aus anderen Paketen ein, um ihn in unserem Programm zu verwenden. Das Paket fmt (Abkürzung für Format) implementiert die Formatierung der Ein- und Ausgabe. Wenn du weißt, was wir gerade über Pakete gelernt haben, was denkst du, was die Dateien des Pakets fmt am Anfang enthalten würden?1

Beachte, dass fmt von doppelten Anführungszeichen umgeben ist. Die Verwendung von doppelten Anführungszeichen wie dieser ist bekannt als ein String-Literal, das ein Ausdruck vom Typ ist. In Go stellen Strings eine Folge von Zeichen (Buchstaben, Zahlen, Symbole usw.) mit einer bestimmten Länge dar. Strings werden im nächsten Kapitel genauer beschrieben, aber zunächst ist es wichtig zu wissen, dass auf ein öffnendes " Zeichen ein schließendes " Zeichen folgen muss und alles, was dazwischen liegt, zum String gehört (das " Zeichen selbst ist nicht Teil des Strings).

Die Zeile, die mit // beginnt, wird als ein Kommentar bezeichnet. Kommentare werden vom Go-Compiler ignoriert und sind für dich selbst da (oder für denjenigen, der den Quellcode deines Programms abholt). Go unterstützt zwei verschiedene Arten von Kommentaren: // Kommentare, bei denen der gesamte Text zwischen dem // und dem Ende der Zeile Teil des Kommentars ist, und /* */ Kommentare, bei denen alles zwischen den Sternchen Teil des Kommentars ist (und mehrere Zeilen umfassen kann).

Danach siehst du eine Funktionsdeklaration:

func main() {
    fmt.Println("Hello, World")
}

Funktionen sind die Bausteine eines Go-Programms. Sie haben Eingänge, Ausgänge und eine Reihe von Schritten, die Anweisungen genannt werden und der Reihe nach ausgeführt werden. Alle Funktionen beginnen mit dem Schlüsselwort func gefolgt vom Namen der Funktion (in diesem Fallmain), einer Liste von null oder mehr Parametern, die von Klammern umgeben sind, einem optionalen Rückgabetyp und einem Körper, der von geschweiften Klammern umgeben ist. Diese Funktion hat keine Parameter, gibt nichts zurück und hat nur eine Anweisung. Der Name main ist besonders, weil es die Funktion ist, die aufgerufen wird, wenn du das Programm ausführst.

Der letzte Teil unseres Programms ist diese Zeile:

fmt.Println("Hello, World")

Diese Anweisung besteht aus drei Komponenten. Zuerst greifen wir auf eine andere Funktion innerhalb des fmt Pakets namens Println zu (das ist der fmt.Println Teil); Println bedeutet "Zeile drucken". Dann erstellen wir eine neue Zeichenkette, die Hello, World enthält, und rufen auf (auch bekannt als call oder execute), wobei die Zeichenkette das erste und einzige Argument ist.

An diesem Punkt hast du bereits eine Menge neuer Begriffe kennengelernt. Manchmal ist es hilfreich, dein Programm bewusst laut vorzulesen. Eine Lesung des Programms, das wir gerade geschrieben haben, könnte so aussehen:

Erstelle ein neues ausführbares Programm, das auf die Bibliothek fmt verweist und eine Funktion namens main enthält. Diese Funktion benötigt keine Argumente und gibt nichts zurück. Sie greift auf die Funktion Println zu, die im Paket fmt enthalten ist, und ruft sie mit einem Argument auf - der Zeichenkette Hello, World.

Die Funktion Println macht die eigentliche Arbeit in diesem Programm. Du kannst mehr darüber herausfinden, indem du Folgendes in dein Terminal eingibst:

godoc fmt Println

Du solltest unter anderem die in Abbildung 1-1 gezeigte Ausgabe sehen.

Abbildung 1-1. Ausgabe von godoc fmt Println

Println verwendet die Standardformate für seine Operanden und schreibt auf die Standardausgabe. Zwischen den Operanden werden immer Leerzeichen eingefügt und ein Zeilenumbruch wird angehängt. Er gibt die Anzahl der geschriebenen Bytes und alle aufgetretenen Schreibfehler zurück.

Go ist eine sehr gut dokumentierte Programmiersprache, aber diese Dokumentation kann schwer zu verstehen sein, wenn du dich nicht bereits mit Programmiersprachen auskennst. Nichtsdestotrotz ist der Befehl godoc äußerst nützlich und eine gute Anlaufstelle, wenn du eine Frage hast.

Zurück zu der Funktion, um die es hier geht. In dieser Dokumentation steht, dass die Funktion Println alles, was du ihr gibst , an die Standardausgabe (d.h. die Ausgabe des Terminals, in dem du arbeitest) sendet. Diese Funktion bewirkt, dass Hello, World angezeigt wird.

Im nächsten Kapitel werden wir untersuchen, wie Go Dinge wie Hello, World speichert und darstellt, indem wir etwas über Typen lernen.

Übungen

  1. Was ist Whitespace?
  2. Was ist ein Kommentar? Welche zwei Möglichkeiten gibt es, einen Kommentar zu schreiben?
  3. Unser Programm begann mit package main. Mit was würden die Dateien im Paket fmt beginnen?
  4. Wir haben die Funktion Println aus dem Paket fmt verwendet. Wenn du die Funktion Exit aus dem Paket os verwenden möchtest, was müsstest du tun?
  5. Ändere das Programm, das wir geschrieben haben, so ab, dass es statt Hello, World Hello, my name is gefolgt von deinem Namen ausgibt.

1 Die Dateien im Paket fmt beginnen mit package fmt.

Get Wir stellen vor: Go now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.