Поиск…


Вступление

Команда go - это программа командной строки, которая позволяет управлять разработкой Go. Он позволяет создавать, запускать и тестировать код, а также множество других задач, связанных с Go.

Идти на пробежку

go run запускает программу без создания исполняемого файла. В основном полезно для разработки. run будет выполнять только пакеты, чье имя пакета является основным .

Чтобы продемонстрировать, мы будем использовать простой пример Hello World main.go :

package main

import fmt

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

Выполнять без компиляции в файл:

go run main.go

Выход:

Hello, World!

Запуск нескольких файлов в пакете

Если пакет является основным и разбит на несколько файлов, необходимо включить другие файлы в команду run :

go run main.go assets.go

Go Build

go build будет компилировать программу в исполняемый файл.

Чтобы продемонстрировать, мы будем использовать простой пример Hello World main.go:

package main

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

Скомпилируйте программу:

go build main.go

build создает исполняемую программу, в данном случае: main или main.exe . Затем вы можете запустить этот файл, чтобы увидеть результат Hello, World! , Вы также можете скопировать его в аналогичную систему, в которой не установлен Go, сделать его исполняемым и запустить там.

Укажите ОС или архитектуру в сборке:

Вы можете указать, какую систему или архитектуру строить, изменив env перед build :

env GOOS=linux go build main.go # builds for Linux
env GOARCH=arm go build main.go # builds for ARM architecture

Создание нескольких файлов

Если ваш пакет разбит на несколько файлов, а имя пакета является основным (то есть не является импортируемым пакетом ), вы должны указать все файлы для сборки:

go build main.go assets.go # outputs an executable: main

Создание пакета

Чтобы создать пакет main , вы можете просто использовать:

go build . # outputs an executable with name as the name of enclosing folder

Go Clean

go clean очистит любые временные файлы, созданные при вызове, go build в программу. Он также очистит файлы, оставшиеся от Makefiles.

Go Fmt

go fmt будет форматировать исходный код программы аккуратным, идиоматическим способом, который легко читать и понимать. Рекомендуется использовать go fmt для любого источника, прежде чем отправлять его для публичного просмотра или в систему управления версиями, чтобы упростить чтение.

Для форматирования файла:

go fmt main.go

Или все файлы в каталоге:

go fmt myProject

Вы также можете использовать gofmt -s ( not go fmt ), чтобы попытаться упростить любой код, который он может.

gofmt ( not go fmt ) также может использоваться для кода рефакторинга. Он понимает Go, поэтому он более эффективен, чем простой поиск и замена. Например, учитывая эту программу ( 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")
}

Вы можете заменить метод Original с помощью Refactor с помощью gofmt :

gofmt -r 'Original -> Refactor' -d main.go

Который приведет к различию:

-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")
 }

Иди возьми

go get загружайте пакеты, названные по пути импорта, вместе со своими зависимостями. Затем он устанавливает именованные пакеты, например «go install». Get также принимает флаги сборки для управления установкой.

go get github.com/maknahar/phonecountry

При проверке нового пакета get создает целевой каталог $GOPATH/src/<import-path> . Если GOPATH содержит несколько записей, get использует первый. Аналогично, он установит скомпилированные двоичные файлы в $GOPATH/bin .

При проверке или обновлении пакета, найдите ветку или тег, соответствующий локально установленной версии Go. Наиболее важным правилом является то, что если в локальной установке установлена ​​версия «go1», найдите поиск ветки или тега с именем «go1». Если такой версии нет, она извлекает самую последнюю версию пакета.

При использовании go get флаг -d заставляет его загружать, но не устанавливать данный пакет. Флаг -u позволит ему обновить пакет и его зависимости.

Никогда не проверяйте и не обновляйте код, хранящийся в каталогах поставщиков.

Go env

go env [var ...] принт go окружающая среда информация.

По умолчанию он печатает всю информацию.

$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"

Если в качестве аргументов задано одно или несколько имен переменных, оно печатает значение каждой именованной переменной в своей строке.

$go env GOOS GOPATH

darwin
/Users/vikashkv/work


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow