Каждая программа Go состоит из пакетов, и каждый пакет имеет путь импорта:
"fmt"
"math/rand"
"github.com/yourbasic/graph"
Пакеты в стандартной библиотеке имеют короткие пути импорта, такие как "fmt" и "math/rand". Сторонние пакеты, такие как "github.com/yourbasic/graph", обычно имеют путь импорта, который включает в себя хостинг (github.com) и название организации (yourbasic).
По соглашению имя пакета совпадает с последним элементом пути импорта:
fmt
rand
yourbasic
Ссылки на определения других пакетов всегда должны иметь префикс с именами их пакетов, и только заглавные имена из других пакетов доступны.
package main
import (
"fmt"
"math/rand"
"github.com/yourbasic/graph"
)
func main() {
n := rand.Intn(100)
g := graph.New(n)
fmt.Println(g)
}
Объявление пакета
Каждый исходный файл Go начинается с объявления пакета, который содержит только имя пакета.
Например, файл src/math/rand/exp.go, являющийся частью реализации пакета math/rand, содержит следующий код.
package rand
import "math"
const re = 7.69711747013104972
…
Вам не нужно беспокоиться о конфликтах имен пакетов, только путь импорта пакета должен быть уникальным. Как писать код Go показывает, как организовать ваш код и его пакеты в файловой структуре.
Конфликты имен пакетов
Вы можете настроить имя, под которым вы ссылаетесь на импортируемый пакет.
package main
import (
csprng "crypto/rand"
prng "math/rand"
"fmt"
)
func main() {
n := prng.Int() // псевдослучайное число
b := make([]byte, 8)
// криптографически безопасное псевдослучайное число
csprng.Read(b)
fmt.Println(n, b)
}
Точки в импорте
Если точка . появляется вместо имени в операторе импорта, все экспортированные идентификаторы пакета могут быть доступны без квалификатора.
package main
import (
"fmt"
. "math"
)
func main() {
fmt.Println(Sin(Pi/2)*Sin(Pi/2) + Cos(Pi)/2) // 0.5
}
Точечный импорт может затруднить чтение программ и, как правило, его следует избегать.
Загрузка пакета
Команда go get загружает пакеты, названные путями импорта, вместе с их зависимостями, а затем устанавливает пакеты.
$ go get github.com/go-sql-driver/mysql
Путь импорта соответствует хранилищу кода. Это уменьшает вероятность будущих конфликтов имен.
Пакетная документация
На веб-сайте GoDoc размещена документация для всех общедоступных пакетов Go на Bitbucket, GitHub, Google Project Hosting и Launchpad:
https://godoc.org/fmt
https://godoc.org/math/rand
https://godoc.org/github.com/go-sql-driver/mysql
Команда godoc извлекает и генерирует документацию для всех локально установленных программ Go. Следующая команда запускает веб-сервер, который представляет документацию по адресу http://localhost:6060/.
$ godoc -http=:6060
Читайте также:
Комментариев нет:
Отправить комментарий