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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow