Files
build-web-application-with-…/ru/01.3.md
Slava Zgordan c01ae989ca 01.3
2015-07-26 07:37:42 +02:00

11 KiB
Raw Blame History

#1.3 Команды Go

Команды Go

Язык Go имеет в своем распоряжении полный набор операций, выполняемых из командной строки. Вы можете исполнить в терминале команду go, чтобы увидеть их:

Рисунок 1.3 Команда Go показывает подробную информацию

Все эти команды могут быть нам полезными. Давайте посмотрим, как пользоваться некоторыми из них.

go build

Эта команда компилирует тесты. По необходимости она также скомпилирует зависимости.

  • Если имя пакета - main, а, например, mymath из раздела 1.2, ничего не будет создано, после того, как Вы выполните go build. Если Вы хотите скомпилировать файл .a в $GOPATH/pkg, Вам вместо этого нужно выполнить go install.
  • Если имя пакета - не main, то в каталоге, откуда Вы запустили команду, будет создан исполняемый файл. Если Вы хотите, чтобы файл был создан в $GOPATH/bin, используйте go install или go build -o ${PATH_HERE}/a.exe.
  • Если в каталоге много файлов, но Вы хотите скомпилировтаь только один, Вам нужно добавить имя файла после go build. Например, go build a.go. go build скомпилирует все файлы в каталоге.
  • Вы также можете указать имя исполняемого файла, который будет создан. Например, в проекте mathapp (раздел 1.2), команда go build -o astaxie.exe создаст astaxie.exe вместо mathapp.exe. Именем по умолчанию для исполнямеого файла является имя каталога (если пакет не main) или название первого файла-исходника (если пакет - main).

(Согласно The Go Programming Language Specification, имя пакета должно следовать после слова package в первой строке исходного файла. Оно не обязательно должно быть таким же, как имя каталога, и имя исполняемого файла по умлочанию будет таким же, как и имя каталога.])

  • go build не работает с файлами, имя которых начинается на _ или ..

  • Если Вам нужно несколько исходных файлов для каждоый операционной системы, Вы можете в конце каждого имени файлов добавить соответствующий суффикс ОС. Предположим, имеется несколько файлов для загрузки массивов. Можно назвать их следующим образом:

    array_linux.go | array_darwin.go | array_windows.go | array_freebsd.go

go build выберет тот, который соответствует Вашей ОС. Например, в Linux-системах он скомпилирует только array_linux.go, а все остальные файлы, начинающиеся с array_, проигнорирует.

go clean

Эта команда удаляет все файлы, созданные компилятором, включая следующие:

_obj/            // старый каталог object, left by Makefiles
_test/           // старый каталог test, left by Makefiles
_testmain.go     // старый каталог gotest, left by Makefiles
test.out         // старый каталог test, left by Makefiles
build.out        // старый каталог test, left by Makefiles
*.[568ao]        // объектные файлы, созданные Makefiles

DIR(.exe)        // создано go build
DIR.test(.exe)   // создано go test -c
MAINFILE(.exe)   // создано go build MAINFILE.go

Я обычно пользуюсь этой командой, чтобы почистить свой проект от файлов перед тем, как загрузить его на Github. Эти файлы полезны на этапе тестов, но не нужны для контроля версий.

go fmt и gofmt

Те из вас, которые работают с C/C++, должны знать, что люди часто дискутируют, какой стиль написания кода лучше: K&R-стиль или ANSI-стиль. Однако же в Go есть только один стиль написания кода. Например, левые скобки могут быть только в конце строк, а не на своих отдельных строках, иначе Вы получите ошибку компиляции! К счастью, Вам не нужно запоминать все эти правила. go fmt сделает всю работу за Вас. Просто выполните команду go fmt <File name>.go в терминале. Я не пользуюсь этой командой часто, поскольку среды разработки делают это автоматически при сохранении проекта. Я расскажу о средах разработки подробнее в следующем разделе.

go fmt - это алиас(сокращение) для 'gofmt -l -w' для пакетов, указанных в пути команды import.

Мы обычно используем gofmt -w вместо go fmt. Последний вариант не переписывает исходники после форматирования кода. gofmt -w src форматирует весь проект.

go get

Эта команда служит для установки удаленных пакетов. На данный момент она поддерживает BitBucket, Github, Google Code и Launchpad. При запуске этой команды происходят вещи: первая - Go скачивает исходники пакетов, вторая - исполняется go install. Перед использованием этой команды убедитесь, что у Вас установлены соответствующие инструменты:

BitBucket (Mercurial Git)
Github (git)
Google Code (Git, Mercurial, Subversion)
Launchpad (Bazaar)

Для того, чтобы использовать эту команду, Вы должны корректно установить эти инструменты. Не забудьте установить переменную $PATH. Кстати, эта команда также поддерживает нестандартные доменные имена. Для более детальной информации используйте go help remote ( *** Прим. переводчика на русский язык - у меня сработала не эта команда, а go help importpath*** ).

go install

Эта команда компилирует все пакеты, создает файлы и перемещает их в $GOPATH/pkg или $GOPATH/bin.

go test

Эта команда загружает все файлы, чьи имена включают в себя *_test.go и создает файлы тестов, а затем печатает на экране информацию, подобную следующей:

ok   archive/tar   0.011s
FAIL archive/zip   0.022s
ok   compress/gzip 0.033s
...

По умолчанию она обрабатывает все файлы тестов. Для более подробной информации используйте go help testflag.

godoc

Многие говорят, что никакая сторонняя документация для программирования на Go не нужна (вообще я сделал одну CHM уже). В Go существует мощная утилита для того, чтобы управлять документацией "из коробки".

Итак, как мы можем ознакомиться с инормацией о пакете в документации? Например, если Вы хотите получить подробную информацию о пакете builtin, используйте команду godoc builtin. Подобным образом Вы можете воспользоваться godoc net/http для того, тчобы ознакомиться с документацией по пакету http. Если Вам нужно больше деталей об отдельных функциях, выполните godoc fmt Printf и godoc -src fmt Printf, чтобы увидеть исходный код функции .

Выполните godoc -http=:8080, затем откройте в браузере 127.0.0.1:8080. Вы должны увидеть локальную версию сайта golang.org. Он покажет не только информацию о стандартных пакетах, но также о пакетах в Вашем $GOPATH/pkg. Это здорово для людей, которые страдают от Великого Китайского Файерволла.

Другие команды

В Go есть больше команд, чем те, о которых мы только что говорили:

go fix // делает апгрейд кода, написанного в версии, старее, чем go1 до новой версии (после go1)
go version // выдает информацию аб утсановленной версии Go
go env // выдает информацию о переменных окружения Go
go list // перечисляет все установленные пакеты
go run // компилирует во временные файлы и запускает приложение

По этим командам есть также более детальная информация. Вы можете воспользоваться go help <команда>, чтобы ознакомиться с ней.

Ссылки