Go был создан как язык, продвигающий эффективные методы разработки программного обеспечения. Повторное использование кода является фундаментальным компонентом высококачественного программного обеспечения, что отражено в концепции Не повторяйтесь.

import "fmt"

Пакет «fmt» содержит ряд функций, связанных с форматированием и выводом на экран. Такое объединение кода служит трем целям:

  • Это снижает вероятность перекрытия имен. Это делает наши имена функций простыми и точными.
  • Он упорядочивает код, чтобы упростить поиск и повторное использование кода.
  • Это ускоряет компилятор, требуя перекомпиляции меньшего количества разделов программы. Несмотря на то, что мы используем пакет fmt, нам не нужно его перекомпилировать каждый раз, когда мы обновляем нашу программу.

Экспортированные и неэкспортированные имена

Все, что начинается с заглавной буквы (переменная, тип или функция), экспортируется и отображается вне пакета.

Все, что не начинается с заглавной буквы, не экспортируется и может быть просмотрено только в том же пакете.

package main
import (
	"fmt"
	"math"
)
func main() {
	// MaxInt64 is an exported name
	fmt.Println("Max value of int64: ", int64(math.MaxInt64))

	// Phi is an exported name
	fmt.Println("Value of Phi (ϕ): ", math.Phi)

	// pi starts with a small letter, so it is not exported
	fmt.Println("Value of Pi (𝜋): ", math.pi)
}
# Output
./exported_names.go:16:38: cannot refer to unexported name math.pi
./exported_names.go:16:38: undefined: math.pi

Индивидуальные пакеты

Чтобы создать собственный пакет, мы должны сначала создать новый файл и объявить его. В качестве примера,

// declare package
package calculator

Теперь мы можем писать функции в файле. В качестве примера,

package calculator

// create add function
func Add(n1, n2 int) int {
  return n1 + n2
}

// create subtract function
func Subtract(n1, n2 int) int {
  return n1 - n2
}

Импорт пользовательского пакета

Теперь мы можем включить пользовательский пакет в наш основной файл.

package main 

// import the custom package calculator
import (
  "fmt"
  "Packages/calculator"
)

func main() {

  number1 := 9
  number2 := 5

  // use the add function of calculator package
  fmt.Println(calculator.Add(number1, number2))

  // use the subtract function of calculator package
  fmt.Println(calculator.Subtract(number1, number2))

}

В этом случае мы успешно импортировали и использовали пакет калькулятора в нашей программе.

Включая сторонние пакеты

Используя модули Go, вы можете легко добавлять сторонние пакеты в свой проект. Просто импортируйте пакет в любой из исходных файлов вашего проекта, и Go загрузит его для вас при следующей сборке/запуске проекта.

package main

import (
	"fmt"
	"rsc.io/quote"
)

func main() {
	fmt.Println(quote.Go())
}
$ go run main.go
go: finding rsc.io/quote v1.5.2
go: downloading rsc.io/quote v1.5.2
go: extracting rsc.io/quote v1.5.2
go: downloading rsc.io/sampler v1.3.0
go: extracting rsc.io/sampler v1.3.0
go: downloading golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c
go: extracting golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c
go: finding rsc.io/sampler v1.3.0
go: finding golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c

Don't communicate by sharing memory, share memory by communicating.

Эта новая зависимость также будет добавлена ​​Go в файл go.mod.

Установка пакетов вручную

Чтобы загрузить сторонние пакеты из удаленных репозиториев, используйте команду go get.

$ go get -u github.com/jinzhu/gorm

Приведенный выше код загружает пакет gorm с Github и добавляет его в ваш файл go.mod в качестве зависимости.

Вот и все. Теперь вы можете импортировать и использовать вышеуказанный пакет в своей программе следующим образом:

import "github.com/jinzhu/gorm"

Прежде чем я начну, я не могу не упомянуть сайты, где я нашел определения и примеры для вышеупомянутых кодов. Я использовал следующие сайты: