01.2 is ready
This commit is contained in:
153
ru/01.2.md
Normal file
153
ru/01.2.md
Normal file
@@ -0,0 +1,153 @@
|
||||
#1.2 $GOPATH и рабочая директория
|
||||
|
||||
## $GOPATH
|
||||
|
||||
Все команды Go зависят от переменной окружения $GOPATH. Имейте в виду, что это не переменная $GOROOT, в которой хранится путь установки Go. Эта переменная указывает на рабочую директорию Go на Вашем компьютере (я использую этот путь у себя на компьютере; Вы можете заменить его по своему усмотрению, если структура каталогов на вашем компьютере другая).
|
||||
|
||||
В Unix-подобных ситемах переменную можно задать следующим образом:
|
||||
|
||||
export GOPATH=/home/apple/mygo
|
||||
|
||||
В Windows Вам нужно создать новую переменную окружения GOPATH, а затем задать ей значение `c:\mygo`( ***Оно заваисит от того, где расположена Ваша рабочая директория*** )
|
||||
|
||||
It's OK to have more than one path (workspace) in $GOPATH, but remember that you have to use `:`(`;` in Windows) to break them up. At this point, `go get` will save the content to your first path in $GOPATH.
|
||||
$GOPATH при Вашем желании может сожержать больше одного пути к рабочим директориям, но помните, что следует использовать знак `:`(`;` в Windows) для того, чтобы разделять их. В этом случае `go get` будет сохранять содержимое в первый путь из тех, что указаны в $GOPATH.
|
||||
|
||||
В $GOPATH должно находиться три следующих папки:
|
||||
|
||||
- `src` для текстов исходных кодов с расширением .go, .c, .g, .s.
|
||||
- `pkg` для скомпилированных файлов с расширением .a.
|
||||
- `bin` для исполняемых файлов.
|
||||
|
||||
В этой книге я буду использовать `mygo` в качестве единственного пути в $GOPATH.
|
||||
|
||||
## Каталог пакета
|
||||
|
||||
Создайте каталоги и исходные файлы пакетов, такие как `$GOPATH/src/mymath/sqrt.go` (где `mymath` - имя пакета) ( ***Автор использует `mymath` в качестве имени пакета и в качестве имени каталога, где располагаются исходные файлы пакета***)
|
||||
|
||||
Каждый раз при создании пакета Вы должны создать новый каталог в каталоге 'src'. Каталог обычно называется так же, как и пакет, который предполагается использовать. Можно использовать многоуровневую структуру каталогов, если нужно. Например, если создать каталог `$GOPATH/src/github.com/astaxie/beedb`, то путь к пакету будет `github.com/astaxie/beedb`. Имя пакета - это имя последней директории в пути, в данном случае `beedb`.
|
||||
|
||||
Выполните следующие команды: ( ***Сейчас автор возвращается к примеру*** )
|
||||
|
||||
cd $GOPATH/src
|
||||
mkdir mymath
|
||||
|
||||
Создайте новый файл `sqrt.go` и поместите туда следующее:
|
||||
|
||||
// Исходный код $GOPATH/src/mymath/sqrt.go
|
||||
package mymath
|
||||
|
||||
func Sqrt(x float64) float64 {
|
||||
z := 0.0
|
||||
for i := 0; i < 1000; i++ {
|
||||
z -= (z*z - x) / (2 * x)
|
||||
}
|
||||
return z
|
||||
}
|
||||
|
||||
Сейчас нами создан каталог пакета, в пакет записан код. Я рекомендую использовать одни и те же названия для пакетов и каталогов. в которых они находятся, таким образом каталоги будут сожержать все исходные файлы пакета.
|
||||
|
||||
## Компиляция пакетов
|
||||
|
||||
Мы только что создали пакет, но как нам теперь скомпилировать его для того, чтобы потом использовать? Для этого существуют два способа:
|
||||
|
||||
1. Перейдите в каталог пакета и выполните команду `go install`.
|
||||
2. Выполните вышеуказанную команду с указанием имени файла, например `go install mymath`.
|
||||
|
||||
После компиляции можно открыть каталог:
|
||||
|
||||
cd $GOPATH/pkg/${GOOS}_${GOARCH}
|
||||
// Вы увидите созданный файл
|
||||
mymath.a
|
||||
|
||||
Файл с расширением `.a` - это исполняемый файл нашего пакета. Как его можно использовать?
|
||||
|
||||
Очевидно, что для этого нам нужно создать какое-нибудь приложение.
|
||||
|
||||
Создайте новое приложение под названием `mathapp`.
|
||||
|
||||
cd $GOPATH/src
|
||||
mkdir mathapp
|
||||
cd mathapp
|
||||
vim main.go
|
||||
|
||||
Код:
|
||||
|
||||
//$GOPATH/src/mathapp/main.go source code.
|
||||
package main
|
||||
|
||||
import (
|
||||
"mymath"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
|
||||
}
|
||||
|
||||
Для того, чтобы скомпилировать это приложение, перейдите в каталог с приложением `$GOPATH/src/mathapp`, затем выполните команду `go install`. Вы должны увидеть, как исполняемый файл `mathapp` появился в каталоге `$GOPATH/bin/`. Для запуска приложения выполните команду `./mathapp`. Вы должны увидеть следующее в терминале:
|
||||
|
||||
Hello world. Sqrt(2) = 1.414213562373095
|
||||
|
||||
## Установка удаленных пакетов
|
||||
|
||||
В Go есть инструмент для установки удаленных пакетов - команда `go get`. Он поддерживает большинство сообществ Open Source, включая Github, Google Code, BitBucket и Launchpad.
|
||||
|
||||
go get github.com/astaxie/beedb
|
||||
|
||||
Чтобы обновить Ваши удаленные пакеты, выполните `go get -u …`, при этом установятся все дополнительные зависимости .
|
||||
|
||||
Для разных Open Source платформ потребуются различные системы контроля версий, например `git` для Github и `hg` для Google Code. Поэтому Вам нужно соответствующие системы контроля версий перед использованием `go get`.
|
||||
|
||||
После выполнения команд выше структура каталогов будет выглядеть следующим образом:
|
||||
|
||||
$GOPATH
|
||||
src
|
||||
|-github.com
|
||||
|-astaxie
|
||||
|-beedb
|
||||
pkg
|
||||
|--${GOOS}_${GOARCH}
|
||||
|-github.com
|
||||
|-astaxie
|
||||
|-beedb.a
|
||||
|
||||
Фактически `go get` делает точную копию кода в $GOPATH/src локальной файловой системы, а затем выполняет `go install`.
|
||||
|
||||
Удаленные пакеты можно использовать так же, как и локальные.
|
||||
|
||||
import "github.com/astaxie/beedb"
|
||||
|
||||
## Полная структура каталогов
|
||||
|
||||
Если Вы выполнили все предыдущие шаги, структура каталогов должна выглядеть следующим образом:
|
||||
|
||||
bin/
|
||||
mathapp
|
||||
pkg/
|
||||
${GOOS}_${GOARCH}, например darwin_amd64, linux_amd64
|
||||
mymath.a
|
||||
github.com/
|
||||
astaxie/
|
||||
beedb.a
|
||||
src/
|
||||
mathapp
|
||||
main.go
|
||||
mymath/
|
||||
sqrt.go
|
||||
github.com/
|
||||
astaxie/
|
||||
beedb/
|
||||
beedb.go
|
||||
util.go
|
||||
|
||||
Now you are able to see the directory structure clearly; `bin` contains executable files, `pkg` contains compiled files and `src` contains package source files.
|
||||
Можно ясно видеть структуру каталогов; `bin` содержит исполняемые файлы, `pkg` - скомпилированные файлы и `src` - исходные коды пакетов.
|
||||
|
||||
(В Windows переменная окружения называется `%GOPATH%`, однако эта книга следует в основном стилю Unix, если Вы пользуетесь Windows, замените ее сами.)
|
||||
|
||||
## Ссылки
|
||||
|
||||
- [Содержание](preface.md)
|
||||
- Предыдущий раздел: [Установка](01.1.md)
|
||||
- Следующий раздел: [Команды Go](01.3.md)
|
||||
Reference in New Issue
Block a user