Go
Het Go-commando
Zoeken…
Invoering
De opdracht go
is een opdrachtregelprogramma waarmee Go-ontwikkeling kan worden beheerd. Het maakt het bouwen, uitvoeren en testen van code, evenals een verscheidenheid aan andere Go-gerelateerde taken.
Ga rennen
go run
voert een programma uit zonder een uitvoerbaar bestand te maken. Vooral nuttig voor ontwikkeling. run
voert alleen pakketten uit waarvan de pakketnaam hoofd is .
Om dit te demonstreren, gebruiken we een eenvoudig Hello World-voorbeeld main.go
:
package main
import fmt
func main() {
fmt.Println("Hello, World!")
}
Uitvoeren zonder te compileren naar een bestand:
go run main.go
Output:
Hello, World!
Voer meerdere bestanden in pakket uit
Als het pakket hoofdbestanddeel is en in meerdere bestanden is gesplitst, moet u de andere bestanden opnemen in de opdracht run
:
go run main.go assets.go
Ga bouwen
go build
compileert een programma in een uitvoerbaar bestand.
Om dit te demonstreren, gebruiken we een eenvoudig Hello World-voorbeeld main.go:
package main
import fmt
func main() {
fmt.Println("Hello, World!")
}
Stel het programma samen:
go build main.go
build
maakt een uitvoerbaar programma, in dit geval: main
of main.exe
. U kunt dit bestand vervolgens uitvoeren om de uitvoer te zien Hello, World!
. Je kunt het ook kopiëren naar een soortgelijk systeem waarop Go niet is geïnstalleerd, het uitvoerbaar maken en het daar uitvoeren.
Geef besturingssysteem of architectuur op in build:
U kunt het systeem of de architectuur te bouwen opgeven door het wijzigen van de env
voordat build
:
env GOOS=linux go build main.go # builds for Linux
env GOARCH=arm go build main.go # builds for ARM architecture
Bouw meerdere bestanden
Als uw pakket is opgesplitst in meerdere bestanden en de naam van het pakket is de belangrijkste (dat wil zeggen, het is niet een importeerbare pakket), moet u alle bestanden naar build opgeven:
go build main.go assets.go # outputs an executable: main
Een pakket bouwen
Om een pakket genaamd main
te bouwen, kunt u eenvoudig gebruik maken van:
go build . # outputs an executable with name as the name of enclosing folder
Ga schoon
go clean
ruimt tijdelijke bestanden op die zijn gemaakt bij het aanroepen van go build
op een programma. Het zal ook bestanden opschonen die overblijven van Makefiles.
Ga Fmt
go fmt
formatteert de broncode van een programma op een nette, idiomatische manier die gemakkelijk te lezen en te begrijpen is. Het wordt aanbevolen om go fmt
op een willekeurige bron te gebruiken voordat u deze indient voor openbare weergave of vastlegging in een versiebeheersysteem, om het lezen eenvoudiger te maken.
Een bestand opmaken:
go fmt main.go
Of alle bestanden in een map:
go fmt myProject
Je kunt ook gofmt -s
( niet go fmt
) om te proberen elke code te vereenvoudigen.
gofmt
( not go fmt
) kan ook worden gebruikt om code te refacteren. Het begrijpt Go, dus het is krachtiger dan het gebruik van een eenvoudige zoekopdracht en vervanging. Bijvoorbeeld, gegeven dit programma ( 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")
}
Je kunt de methode Original
vervangen door Refactor
door gofmt
:
gofmt -r 'Original -> Refactor' -d main.go
Wat het verschil oplevert:
-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")
}
Ga halen
go get
downloads de pakketten genoemd door de importpaden, samen met hun afhankelijkheden. Vervolgens worden de genoemde pakketten geïnstalleerd, zoals 'go install'. Get accepteert ook build-vlaggen om de installatie te besturen.
ga naar github.com/maknahar/phonecountry
Bij het uitchecken van een nieuw pakket maakt get de $GOPATH/src/<import-path>
. Als de GOPATH meerdere vermeldingen bevat, gebruikt get de eerste. Op dezelfde manier installeert het gecompileerde binaries in $GOPATH/bin
.
Wanneer u een pakket uitcheckt of bijwerkt, zoekt u naar een branch of tag die overeenkomt met de lokaal geïnstalleerde versie van Go. De belangrijkste regel is dat als op de lokale installatie versie "go1" wordt uitgevoerd, zoekopdrachten worden gezocht naar een filiaal of tag met de naam "go1". Als een dergelijke versie niet bestaat, wordt de meest recente versie van het pakket opgehaald.
Bij het gebruik van go get
, zorgt de vlag -d
ervoor dat het wordt gedownload maar niet het gegeven pakket installeert. Met de vlag -u
kan het het pakket en zijn afhankelijkheden bijwerken.
Ontvang nooit controles of updates van codes die zijn opgeslagen in leveranciersmappen.
Ga env
go env [var ...]
prints gaan omgevingsinformatie.
Standaard wordt alle informatie afgedrukt.
$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"
Als een of meer variabelenamen als argumenten worden gegeven, wordt de waarde van elke benoemde variabele op zijn eigen regel afgedrukt.
$go env GOOS GOPATH
darwin
/Users/vikashkv/work