Статьи

Создание собственного пакета в Go

Пакет в 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