01.3 fix 1
This commit is contained in:
52
ru/01.3.md
52
ru/01.3.md
@@ -1,28 +1,28 @@
|
||||
#1.3 Команды Go
|
||||
#1.3 Утилиты Go
|
||||
|
||||
## Команды Go
|
||||
## Утилиты Go
|
||||
|
||||
Язык 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` скомпилирует все файлы в каталоге.
|
||||
- Если имя пакета не `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 <File name>.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 <утилита>`, чтобы ознакомиться с ней.
|
||||
|
||||
## Ссылки
|
||||
|
||||
|
||||
Reference in New Issue
Block a user