#go #module
#Вперед #модуль
Вопрос:
Привет, кто-нибудь может помочь мне запустить мой main.go: go run main.go
?
Есть две папки, которые находятся рядом друг с другом:
в папке proj1 есть main.go, go.mod
в папке package1 есть package1.go, go.mod, utility.go
внутри main.go:
package main
import (
"package1"
"fmt"
)
func main() {
y := package1.Struct1{
v: "1",
}
z := package1.isTrue()
fmt.Println(z)
}
внутри моей папки пакета: package1.go
package package1
type Package1 struct {}
func (a *Package1) IsTrue() bool {
return true
}
Моя версия Go: go1.15.2 linux / amd64
Мои настройки Go env:
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/user1/.cache/go-build"
GOENV="/home/user1/.config/go/env"
GOMODCACHE="/mnt/sda5/gopath/pkg/mod"
GOOS="linux"
GOPATH="/mnt/sda5/gopath"
GOROOT="/usr/local/go"
...
Я пытался :
перейдите к установке, перейдите к сборке… результаты ошибки внутри папки пакета отсутствуют
перейдите к поставщику мода, запустите main.go, перейдите к get -u package1 … результат в том же сообщении при запуске внутри папки proj1:
пакет package1 отсутствует в GOROOT (/ usr/local/go/src/package1)
Линтер плагина VS Code Go не показывает никаких проблем. Пожалуйста, помогите. Спасибо!
Комментарии:
1. Это не то, как используются модули или как компилируется пакет. Как написать код Go , шаг за шагом проходит через этот же тип примера.
2. Если вы правильно установите последнюю версию Go, я сомневаюсь, что вам нужно будет просматривать или изменять какие-либо переменные среды. Другими словами, я думаю, что принятый ответ в основном устарел. Рекомендуемая ссылка @JimB также устарела. По состоянию на 2022 год go.dev/ doc , вероятно, является хорошей отправной точкой.
Ответ №1:
Чтобы устранить ошибку, с которой я столкнулся package package1 is not in GOROOT (/usr/local/go/src/package1)
Я должен был убедиться, что переменные среды были правильно настроены.
Я добавил эти строки в bashrc
файл:
export GO111MODULE=on
#GOPATH MUST BE OUTSIDE OF GOROOT directory!!!
export GOPATH=/mnt/sda1/programming/gopath
export PATH=$PATH:$GOPATH/bin
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
Я загрузил bashrc
файл в терминал:
source ~/.bashrc
Теперь я могу выполнить следующую процедуру для программирования на языке Go.
Создайте новую main
папку… Внутри этой main
папки: создайте main.go
файл, начинающийся с package main
Выполните команду ниже:
go mod init main
создайте другую папку с новым именем пакета: например package1
внутри package1
папки: создайте все файлы package package1
в 1-й строке… но НЕ СОЗДАВАЙТЕ ФАЙЛ MOD внутри этой папки пакета!!!
в вашем main.go
вы можете импортировать этот пакет и использовать его
import "main/package1"
y := package1.Struct1{a: 1, b: 2,...}
z := y.func1()
Комментарии:
1. Мне нужно объяснение по этому поводу.
2. в какой части вам нужно объяснение?
3. Похоже на список волшебных танцевальных шагов? Если бы вы могли объяснить, что делает каждый шаг и почему мы это делаем
4. привет, я обновил ответ. пожалуйста, посмотрите.
Ответ №2:
Эта страница является лучшим результатом поиска…
пакет xxxxx отсутствует в GOROOT (/ usr / lib/go/src/xxxxx)
В моем случае я пытался:
go build mything
Это выдало мне ошибку. Решение было простым, мне нужно было быть более конкретным:
go build mything.go
Комментарии:
1. Спасибо за предоставление этого ответа. Я действительно искал это и оказался здесь, и это то, что решило это для меня.
Ответ №3:
Я столкнулся с той же проблемой, но в моем случае я забыл .go поэтому после запуска: проблема: go run основное решение: go run main.go и теперь он работает нормально