Go
Der Go-Befehl
Suche…
Einführung
Der Befehl go
ist ein Befehlszeilenprogramm, mit dem die Go-Entwicklung verwaltet werden kann. Es ermöglicht das Erstellen, Ausführen und Testen von Code sowie eine Vielzahl anderer Aufgaben im Zusammenhang mit Go.
Geh Rennen
go run
wird ein Programm ausgeführt, ohne eine ausführbare Datei zu erstellen. Meist nützlich für die Entwicklung. run
führt nur Pakete aus, deren Paketname main ist .
Um dies zu demonstrieren, verwenden wir ein einfaches Hello World-Beispiel main.go
:
package main
import fmt
func main() {
fmt.Println("Hello, World!")
}
Ausführen ohne zu einer Datei zu kompilieren:
go run main.go
Ausgabe:
Hello, World!
Führen Sie mehrere Dateien im Paket aus
Wenn das Paket main ist und in mehrere Dateien aufgeteilt ist, müssen die anderen Dateien in den run
:
go run main.go assets.go
Bauen Sie auf
go build
kompiliert ein Programm in eine ausführbare Datei.
Um dies zu demonstrieren, verwenden wir ein einfaches Hello World-Beispiel main.go:
package main
import fmt
func main() {
fmt.Println("Hello, World!")
}
Kompilieren Sie das Programm:
go build main.go
build
erstellt ein ausführbares Programm, in diesem Fall: main
oder main.exe
. Sie können diese Datei dann ausführen, um die Ausgabe zu sehen. Hello, World!
. Sie können es auch auf ein ähnliches System kopieren, auf dem Go nicht installiert ist , es ausführbar machen und dort ausführen.
Geben Sie das Betriebssystem oder die Architektur im Build an:
Sie können angeben, welches System oder welche Architektur erstellt werden soll, indem Sie die env
vor dem build
env
:
env GOOS=linux go build main.go # builds for Linux
env GOARCH=arm go build main.go # builds for ARM architecture
Erstellen Sie mehrere Dateien
Wenn Ihr Paket in mehrere Dateien aufgeteilt ist und der Paketname main lautet ( dh es handelt sich nicht um ein importierbares Paket ), müssen Sie alle zu erstellenden Dateien angeben:
go build main.go assets.go # outputs an executable: main
Paket erstellen
Um ein Paket namens main
erstellen, können Sie einfach Folgendes verwenden:
go build . # outputs an executable with name as the name of enclosing folder
Gehen Sie sauber
go clean
bereinigt alle temporären Dateien, die beim Aufruf von go build
auf einem Programm erstellt wurden. Es werden auch Dateien gelöscht, die von Makefiles übrig sind.
Go Fmt
go fmt
formatiert den Quellcode eines Programms auf eine übersichtliche, idiomatische Weise, die leicht zu lesen und zu verstehen ist. Es wird empfohlen, dass Sie go fmt
für jede Quelle verwenden, bevor Sie es zur öffentlichen Anzeige einreichen oder in ein Versionskontrollsystem einbinden.
So formatieren Sie eine Datei:
go fmt main.go
Oder alle Dateien in einem Verzeichnis:
go fmt myProject
Sie können auch gofmt -s
( nicht go fmt
) verwenden, um zu versuchen, den möglichen Code zu vereinfachen.
gofmt
( not go fmt
) kann auch zum Refactor-Code verwendet werden. Es versteht Go und ist daher mächtiger als das einfache Suchen und Ersetzen. Zum Beispiel bei diesem Programm ( main.go
):
package main
type Example struct {
Name string
}
func (e *Example) Original(name string) {
e.Name = name
}
func main() {
e := &Example{"Hello"}
e.Original("Goodbye")
}
Sie können die Methode Original
durch Refactor
durch gofmt
:
gofmt -r 'Original -> Refactor' -d main.go
Welches wird den Unterschied erzeugen:
-func (e *Example) Original(name string) {
+func (e *Example) Refactor(name string) {
e.Name = name
}
func main() {
e := &Example{"Hello"}
- e.Original("Goodbye")
+ e.Refactor("Goodbye")
}
Geh holen
go get
die mit den Importpfaden benannten Pakete zusammen mit ihren Abhängigkeiten heruntergeladen. Dann werden die benannten Pakete wie "go install" installiert. Get akzeptiert auch Build-Flags, um die Installation zu steuern.
Gehen Sie auf github.com/maknahar/phonecountry
Beim Auschecken eines neuen Pakets erstellt get das Zielverzeichnis $GOPATH/src/<import-path>
. Wenn der GOPATH mehrere Einträge enthält, verwendet get den ersten. Ebenso werden kompilierte Binärdateien in $GOPATH/bin
installiert.
Beim Auschecken oder Aktualisieren eines Pakets sollten Sie nach einem Zweig oder Tag suchen, der der lokal installierten Version von Go entspricht. Die wichtigste Regel ist, dass bei einer lokalen Installation der Version "go1" nach einem Zweig oder Tag mit dem Namen "go1" gesucht wird. Wenn keine solche Version vorhanden ist, wird die neueste Version des Pakets abgerufen.
Wenn Sie go get
, bewirkt das Flag -d
dass das angegebene Paket heruntergeladen, jedoch nicht installiert wird. Mit der -u
das Paket und seine Abhängigkeiten aktualisiert werden.
Holen Sie sich nie auschecken oder aktualisieren Sie Code, der in Anbieterverzeichnissen gespeichert ist.
Geh env
go env [var ...]
druckt go-Umgebungsinformationen.
Standardmäßig werden alle Informationen gedruckt.
$go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/vikashkv/work"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.7.4_1/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.7.4_1/libexec/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/xf/t3j24fjd2b7bv8c9gdr_0mj80000gn/T/go-build785167995=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
Wenn ein oder mehrere Variablennamen als Argumente angegeben sind, wird der Wert jeder benannten Variablen in einer eigenen Zeile ausgegeben.
$go env GOOS GOPATH
darwin
/Users/vikashkv/work