Пакет в Go — это пространство имен, которое организует набор связанных файлов. Мы можем думать о пакетах как о похожих папках. Стандартная библиотека Go поставляется с несколькими пакетами, которые можно использовать для создания реальных приложений. Более того, Go поддерживает написание наших собственных пакетов, способствующих модульности кода и лучшей компоновке приложений, следуя определенным правилам, подобно тому, как все исходные файлы в пакете должны объявлять одно и то же имя пакета. Идентификаторы , функции и типы будут экспортированы в другие пакеты, если первая буква имени идентификатора начинается с заглавной буквы.
В посте Создание HTTP-сервера в Go мы уже обновили Path с помощью GOROOT , GOPATH и GOBIN , поэтому в рамках этого поста мы просто начнем с создания пакета в Go, выполнив следующие шаги:
Шаг 1: Создайте каталог в вашем рабочем пространстве, чтобы сохранить исходный код пакета, для меня это numberutil в $ GOPATH / github.com / arpitaggarwal :
1
|
$ mkdir -p $GOPATH/github.com/arpitaggarwal/numberutil |
Шаг 2: Перейдите в каталог, который мы создали на предыдущем шаге, и создайте в нем файл с именем decimalTobinary.go , как показано ниже:
1
2
|
$ cd $GOPATH/github.com/arpitaggarwal/numberutil $ touch decimalTobinary.go |
Скопируйте следующий код Go:
1
2
3
4
5
6
7
8
9
|
package numberutil import "strconv" //Convert Decimal to Binary func DecimalToBinary(decimal int64) string { binary := strconv.FormatInt(decimal, 2 ) return binary } |
Вышеприведенный код содержит одну функцию go, которая принимает десятичное число в качестве входных данных и преобразует его в двоичный файл, используя функцию strconv.FormatInt
Шаг 3. Создайте пакет numberutil с помощью инструмента go следующим образом:
1
2
|
$ cd $GOPATH $ go build github.com/arpitaggarwal/numberutil |
Шаг 4: Далее мы создадим number-util.go с методом main () для использования функции DecimalToBinary из созданного нами пакета numberutil следующим образом:
1
2
|
$ cd $GOPATH/github.com/arpitaggarwal/ $ touch number-util.go |
Скопируйте следующий код Go:
01
02
03
04
05
06
07
08
09
10
11
|
package main import ( "fmt" "github.com/arpitaggarwal/numberutil" ) func main() { i23 := int64( 23 ) fmt.Printf( "Decimal to Binary for 23 is %s \n" , numberutil.DecimalToBinary(i23)) } |
Шаг 5: Установите number-util.go с помощью инструмента go:
1
|
$ go install $GOPATH/github.com/arpitaggarwal/number-util.go |
Выше команды скомпилируйте number-util.go и сгенерируйте его исполняемый двоичный файл в каталоге $ GOROOT / bin или $ GOBIN .
Шаг 6: Запустите number-util.go для перехода в каталог golang :
1
2
|
$ cd golang $ ./go/bin/number-util |
Шаг 7: Теперь мы сгенерируем документацию для созданного нами пакета numberutil , который так же прост, как запущенный инструмент godoc с флагом -http для номера порта из терминала, следующим образом:
1
|
godoc -http=: 9999 |
Теперь, открыв http: // localhost: 9999 / pkg / github.com / arpitaggarwal / numberutil / в браузере, вы увидите документацию по пакету numberutil, который мы создали.
Go также поддерживает использование сторонних библиотек или пакетов, устанавливая их с помощью команды go get или копируя их вручную, например, в $ GOPATH / src или $ GOPATH. Если мы хотим использовать функцию Reverse из «github.com/golang/example/stringutil» пакет, который по умолчанию недоступен в стандартной библиотеке go, тогда мы можем установить его как:
1
2
|
$ cd golang $ go get github.com/golang/example/stringutil |
Или клонируйте пакет и скопируйте его в каталог $ GOPATH / src или $ GOPATH , а затем используйте его как:
1
2
3
4
5
6
7
8
9
|
package main import ( "fmt" "github.com/golang/example/stringutil" ) func main() { fmt.Println(stringutil.Reverse( "!olleh" )) } |
Полный исходный код размещен на github
Ссылка: | Создание собственного пакета в Go от нашего партнера JCG |