Go
Команда Go
Поиск…
Вступление
Команда 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