Расскажите о рабочем пространстве Go

задняя часть Архитектура Go Командная строка

предисловие

Студентов, которые только начинают изучать Go, могут смущать несколько понятий:GOROOTиGOPATH, давайте поговорим о них сегодня. воплощать в жизньgo env, чтобы показать вам соответствующую конфигурацию параметров (часть) моей среды разработки:

GOARCH="amd64"
GOBIN="/Users/chengguilu/goProjects/bin"
GOCACHE="/Users/chengguilu/Library/Caches/go-build"
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/chengguilu/goProjects"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"

GOROOT

Это легко понять, GOROOT представляет собой путь установки компиляции языка go, инструментов, стандартных библиотек и т. д. (например:/usr/local/go), короче говоря, это путь установки, который доступен после установки GO.

GOPATH

(Окрашенный вес)Рабочая область с настраиваемым путем -workspace, эта переменная должна быть установлена ​​до Go1.7 и не может совпадать с каталогом установки Go. После версии 1.8 GOPATH имеет значение по умолчанию --$HOME/go. может быть выполненgo env GOPATHПроверьте, как вы можете видеть выше, мой GOPATH/Users/chengguilu/goProjects. На самом деле, грубо говоря, GOPATH соответствует каталогу на компьютере.эффект: Используется для хранения кода GO, пройдите исполняемые файлы и соответствующие файлы скомпилированного пакета. Go Code должен быть помещен в рабочее пространство, каталог Workspace содержит три подкаталогии

  • Go src хранит исходный код, который организован в пакеты (каждый пакет соответствует каталогу)
  • PKG хранит файлы, сгенерированные после компиляции, такие как: .a файл (статический файл библиотеки)
  • bin хранит скомпилированный исполняемый файл

Мы можем собрать исходный пакет с помощью инструмента go и установить полученные двоичные файлы в каталоги pkg и bin. Давайте попрактикуемся, предыдущий разделHello WorldСтартовая программа сохраняется таким образом. Создайте соответствующие каталоги src, pkg и bin в рабочей области и напишитеhello.goСохранить какGOPATH/src/helloсодержание.

创建目录
Теперь мы можем собрать и установить инструмент go.hello.go

go install hello/

Мы можем выполнить эту команду в любом каталоге системы, и инструмент go будет, в соответствии с указанным GOPATH, вhello/Найдите исходный код в пакете (следующий раздел расскажет вам о концепции пакета, теперь вы можете понять концепцию, вам не нужно вдаваться в нее). Если выполняется по пути пакетаgo install, путь к пакету можно не указывать.go installКоманда создает исполняемый двоичный файл, который, в свою очередь, устанавливает двоичный файл в каталог bin рабочей области, в данном случае$GOPATH/bin/hello.

go install
через командную строку$GOPATH/bin/helloбежать ($GOPATHПожалуйста, замените сами)
Существует более простой способ выполнить исполняемый файл напрямую, но для этого требуется$GOPATH/binдобавить в ПУТЬ.

твоя первая библиотека

Напишите библиотеку и сделайте так, чтобы программа hello вызывала ее. существует$GOPATH/srcСоздайте каталог пакета подgithub.com/Seekload/stringutil

После этого создайте файл в этом каталогеreverse.goИ сохраните его (не имеет значения, если вы не понимаете файл, по мере углубления изучения будут упомянуты соответствующие точки знаний, здесь используется только для демонстрации):

package stringutil
// Reverse 将其实参字符串以符文为单位左右反转。
func Reverse(s string) string {
	r := []rune(s)
	for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
		r[i], r[j] = r[j], r[i]
	}
	return string(r)
}

Каталог показан на рисунке:

использоватьgo buildкоманда для проверки компиляции пакета:

go build github.com/Seekload/stringutil

Его также можно выполнить непосредственно в каталоге пакета.go build. Эта команда не создает выходной файл. Если вы хотите вывести, вы должны использоватьgo installКоманда поместит скомпилированные статические файлы в каталог pkg рабочей области.

подтверждатьstringutilПосле сборки пакета измените исходный файл hello.go и используйте его:

package main

import (
	"fmt"
	"github.com/Seekload/stringutil"
)

func main() {
	fmt.Println(stringutil.Reverse("!oG ,daolkeeS"))
}

воплощать в жизньgo install hello/, перекомпилироватьhello.go, который генерирует исполняемый файлhelloИ выполните:

существуетhello.go, мы представилиgithub.com/Seekload/stringutilпакет, поэтому повторите выполнениеgo intall hello/час,stringutilПакет будет установлен автоматически. Уведомление:go install github.com/Seekload/stringutilбудетstringutil.aставитьpkg/darwin_amd64Каталог, отражающий его исходный каталог.darwin_amd64Эта часть может помочь пересечь платформу и отражать свою операционную систему и архитектуру.

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


(Конец полного текста)

Оригинал статьи, если нужно перепечатать, указывайте источник!
Добро пожаловать, чтобы отсканировать код и подписаться на официальный аккаунт »Голанг здесь” или двигатьсяseekload.net, см. больше замечательных статей.

Публичная учетная запись «Голанг идет» подготовила для вас подарочный пакет для изучения тайны, и ответьте на [электронную книгу] в фоновом режиме, чтобы получить его!

公众号二维码