Tipps
Jede Installation des Google Go Compilers enthält einen eigenen Webserver, über den die Dokumentation der Go Syntax und der Standardbibliothek abgerufen werden kann. Er kann mit dem folgenden Kommando gestartet werden:
$ godoc -http=:8000
Anschließend kann der Webserver mit einem Browser unter http://localhost:8000/ erreicht werden.
Go erlaubt auf einfache Weise die Installation von Paketen, wenn diese in einem entsprechenden Format angeboten werden. Beispielsweise kann der MySQL Connector, der unter https://github.com/go-sql-driver/mysql angeboten wird, mit dem Kommand
$ go get github.com/go-sql-driver/mysql
herunter geladen werden. Dabei ist zu beachten:
-
Das Paket wird unterhalb von
$GOPATH/src
installiert, häufig ist das$HOME/go/src
. -
Es wird immer HTTPS verwendet.
-
Die Anbieter verwenden verschiedene Versionsverwaltungssysteme. Die gängigsten sind Git, Mercurial und Bazaar. Die entsprechenden Clients müssen installiert sein. Bei Debian wheezy sind das die Pakete git, mercurial und bzr.
-
Auf Systemen, die keinen direkten Zugang zum Internet haben, muss die Environment-Variable
https_proxy
gesetzt sein, z.B. mit$ export https_proxy=http://proxy.doma.in:3128/
-
Um die Software zu compilieren und unter
$GOPATH/pkg
zu installieren, wirdgo install
verwendet.
Goimports ist ein Ersatz für
gofmt
. Neben der Formatierung des Quelltextes gemäß Coding Style kann
es die Liste der importierten Module automatisch aktualisieren, d.h.
benötigte Module hinzufügen und nicht genutzte entfernen.
Seit Version 1.2 kann go test
nicht nur automatische Tests durchführen
und die Fehlermeldungen anzeigen, sondern mit der Option -cover
auch
die Testabdeckung bestimmen. Das ist eine Prozentzahl, die angibt,
welcher Anteil des Codes beim Testen tatsächlich ausgeführt wurde. Die
Ergebnisse lassen sich in einer Datei speichern und auswerten. Besonders
schön ist hierbei die Ausgabe in HTML.
$ go test -cover -coverprofile=out
$ go tool cover -html=out
Das erste Kommando führt die Tests durch und speichert das
Abdeckungsprofil in der Datei out
. Das zweite Kommando generiert
daraus eine HTML Ansicht des Sourcecodes, bei der abgedeckte Zeilen grün
und nicht abgedeckte rot dargestellt werden, und öffnet den
Default-Browser zur Anzeige (oder stellt die Anzeige in einem neuen Tab
des laufenden Browsers dar).
Der Go Linker ermöglicht es, den Inhalt globaler Variablen zur Compile- (bzw. Link-) Time zu überschreiben. Beispielsweise kann man das folgende Programm die beim Build eingespeisten Informationen ausgeben:
package main
import "fmt"
var (
Version = "(undefined)"
Author = "(undefined)"
Date = "(undefined)"
)
func main() {
fmt.Println("Version:", Version)
fmt.Println("Autor:", Author)
fmt.Println("Datum:", Date)
}
Wird das Programm einfach nur mit go build
gebaut, ist die Ausgabe:
Version: (undefined)
Autor: (undefined)
Datum: (undefined)
In den Linker Flags kann man die zu überschreibenden String angeben:
$ go build -ldflags "-X main.Version=1.0 -X main.Author=gopher -X main.Date=2020-01-28"
Die Ausgabe ist dann
Version: 1.0
Autor: gopher
Datum: 2020-01-28
In realen Projekten ist es hilfreich, die Informationen automatisch zu beziehen, z.B.
$ go build -ldflags "-X main.Version=$(git describe --tags) -X main.Author=$(id -un) -X main.Date=$(date -Iseconds)"
Beispielausgabe:
Version: v1.0
Autor: gopher
Datum: 2020-01-28T19:22:33+01:00