diff --git a/ru/01.3.md b/ru/01.3.md index a98ebb2c..fd916c9c 100644 --- a/ru/01.3.md +++ b/ru/01.3.md @@ -1,28 +1,28 @@ -#1.3 Команды Go +#1.3 Утилиты Go -## Команды Go +## Утилиты Go -Язык Go имеет в своем распоряжении полный набор операций, выполняемых из командной строки. Вы можете исполнить в терминале команду `go`, чтобы увидеть их: +Язык Go имеет в своем распоряжении полный набор утилит, выполняемых из командной строки. Вы можете исполнить в терминале команду `go`, чтобы увидеть их: ![](images/1.3.go.png?raw=true) Рисунок 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` скомпилирует все файлы в каталоге. +- Если имя пакета не `main`, а, например, `mymath` из раздела 1.2, то после того, как Вы выполните `go build`, ничего не скомпилируется. Если Вы хотите скомпилировать файл `.a` в `$GOPATH/pkg`, Вам вместо этого нужно выполнить `go install`. +- Если имя пакета - `main`, то в каталоге, откуда Вы запустили утилиту, будет создан исполняемый файл. Если Вы хотите, чтобы файл был создан в `$GOPATH/bin`, используйте `go install` или `go build -o ${указать путь}/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](https://golang.org/ref/spec), имя пакета должно следовать после слова `package` в первой строке исходного файла. Оно не обязательно должно быть таким же, как имя каталога, и имя исполняемого файла по умлочанию будет таким же, как и имя каталога.]) +(Согласно [The Go Programming Language Specification](https://golang.org/ref/spec) имя пакета должно следовать после слова `package` в первой строке исходного файла. Оно не обязательно должно быть таким же, как имя каталога, и имя исполняемого файла по умлочанию будет таким же, как и имя каталога.) - `go build` не работает с файлами, имя которых начинается на `_` или `.`. -- Если Вам нужно несколько исходных файлов для каждоый операционной системы, Вы можете в конце каждого имени файлов добавить соответствующий суффикс ОС. Предположим, имеется несколько файлов для загрузки массивов. Можно назвать их следующим образом: +- Если Вам нужно несколько исходных файлов для каждой операционной системы, Вы можете в конце каждого имени файла добавить соответствующий суффикс ОС. Предположим, имеется несколько файлов для загрузки массивов. Можно назвать их следующим образом: array_linux.go | array_darwin.go | array_windows.go | array_freebsd.go @@ -32,11 +32,11 @@ Эта команда удаляет все файлы, созданные компилятором, включая следующие: - _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 + _obj/ // старый каталог object, созданный Makefiles + _test/ // старый каталог test, созданный Makefiles + _testmain.go // старый каталог gotest, созданный Makefiles + test.out // старый каталог test, созданный Makefiles + build.out // старый каталог test, созданный Makefiles *.[568ao] // объектные файлы, созданные Makefiles DIR(.exe) // создано go build @@ -47,9 +47,9 @@ ## go fmt и gofmt -Те из вас, которые работают с C/C++, должны знать, что люди часто дискутируют, какой стиль написания кода лучше: K&R-стиль или ANSI-стиль. Однако же в Go есть только один стиль написания кода. Например, левые скобки могут быть только в конце строк, а не на своих отдельных строках, иначе Вы получите ошибку компиляции! К счастью, Вам не нужно запоминать все эти правила. `go fmt` сделает всю работу за Вас. Просто выполните команду `go fmt .go` в терминале. Я не пользуюсь этой командой часто, поскольку среды разработки делают это автоматически при сохранении проекта. Я расскажу о средах разработки подробнее в следующем разделе. +Те из вас, которые работают с C/C++, должны знать, что люди часто дискутируют, какой стиль написания кода лучше: K&R-стиль или ANSI-стиль. Однако же в Go есть только один стиль написания кода. Например, левые скобки могут быть только в конце строк, а не на своих отдельных строках, иначе Вы получите ошибку компиляции! К счастью, Вам не нужно запоминать все эти правила. `go fmt` сделает всю работу за Вас. Просто выполните команду `go fmt <Имя файла>.go` в терминале. Я не пользуюсь этой командой часто, поскольку среды разработки делают то же самое автоматически при сохранении проекта. Я расскажу о средах разработки подробнее в следующем разделе. -`go fmt` - это алиас(сокращение) для 'gofmt -l -w' для пакетов, указанных в пути команды import. +`go fmt` - это алиас(сокращение) для `gofmt -l -w` для пакетов, указанных в пути команды import. Мы обычно используем `gofmt -w` вместо `go fmt`. Последний вариант не переписывает исходники после форматирования кода. `gofmt -w src` форматирует весь проект. @@ -62,15 +62,15 @@ Google Code (Git, Mercurial, Subversion) Launchpad (Bazaar) -Для того, чтобы использовать эту команду, Вы должны корректно установить эти инструменты. Не забудьте установить переменную `$PATH`. Кстати, эта команда также поддерживает нестандартные доменные имена. Для более детальной информации используйте `go help remote` ( *** Прим. переводчика на русский язык - у меня сработала не эта команда, а `go help importpath`*** ). +Для того, чтобы использовать эту команду, Вы должны корректно установить эти инструменты. Не забудьте установить переменную `$PATH`. Кстати, эта команда также поддерживает нестандартные доменные имена. Для более детальной информации используйте `go help remote` ( ***Прим. переводчика на русский язык - у меня сработала не эта команда, а `go help importpath`*** ). ## go install -Эта команда компилирует все пакеты, создает файлы и перемещает их в `$GOPATH/pkg` или `$GOPATH/bin`. +Эта команда компилирует все пакеты, создает соответствующие файлы и перемещает их в `$GOPATH/pkg` или `$GOPATH/bin`. ## go test -Эта команда загружает все файлы, чьи имена включают в себя `*_test.go` и создает файлы тестов, а затем печатает на экране информацию, подобную следующей: +Эта команда загружает все файлы, чьи имена включают в себя `*_test.go` и создает исполняемые файлы тестов, а затем печатает на экране информацию, подобную следующей: ok archive/tar 0.011s FAIL archive/zip 0.022s @@ -81,23 +81,23 @@ ## godoc -Многие говорят, что никакая сторонняя документация для программирования на Go не нужна (вообще я сделал одну [CHM](https://github.com/astaxie/godoc) уже). В Go существует мощная утилита для того, чтобы управлять документацией "из коробки". +Многие говорят, что никакая сторонняя документация для программирования на Go не нужна (вообще я одну сделал - [CHM](https://github.com/astaxie/godoc)). В Go существует мощная утилита для того, чтобы управлять документацией "из коробки". -Итак, как мы можем ознакомиться с инормацией о пакете в документации? Например, если Вы хотите получить подробную информацию о пакете `builtin`, используйте команду `godoc builtin`. Подобным образом Вы можете воспользоваться `godoc net/http` для того, тчобы ознакомиться с документацией по пакету `http`. Если Вам нужно больше деталей об отдельных функциях, выполните `godoc fmt Printf` и `godoc -src fmt Printf`, чтобы увидеть исходный код функции . +Итак, как мы можем ознакомиться с информацией о пакете в документации? Например, если Вы хотите получить подробную информацию о пакете `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 есть больше утилит, чем те, о которых мы только что говорили: go fix // делает апгрейд кода, написанного в версии, старее, чем go1 до новой версии (после go1) - go version // выдает информацию аб утсановленной версии Go + go version // выдает информацию об установленной версии Go go env // выдает информацию о переменных окружения Go go list // перечисляет все установленные пакеты go run // компилирует во временные файлы и запускает приложение -По этим командам есть также более детальная информация. Вы можете воспользоваться `go help <команда>`, чтобы ознакомиться с ней. +По этим утилитам есть также более детальная информация. Вы можете воспользоваться `go help <утилита>`, чтобы ознакомиться с ней. ## Ссылки