Вопрос или проблема
Я устанавливаю g и иду таким путем:
wget -qO- https://raw.githubusercontent.com/voidint/g/master/install.sh | bash
source ~/.bashrc
g install 1.23.2
Создайте директорию:
mkdir project
cd project
Редактируйте простой hello.go
:
package main
import "fmt"
func main(){
fmt.Println("hello")
}
Укажите версию с помощью менеджера версий:
g use 1.23.2
Соберите его:
go build hello.go
Список и проверка:
ls
hello hello.go
wc -l hello
9919 hello
Почему скомпилированное hello такое огромное? Оно содержит 9919 строк?
Запустите:
debian@MiWiFi-RA71-srv:~/project$ go run hello
package hello is not in std (/home/debian/.g/go/src/hello)
debian@MiWiFi-RA71-srv:~/project$ go run ./hello
main module (main) does not contain package main/project/hello
Как это исправить?
Ответ или решение
Ваша проблема, связанная с ошибкой "package hello is not in std (/home/debian/.g/go/src/hello)" при попытке запустить вашу Go программу, вероятнее всего, связана с неправильной структурой вашего проекта и путём, по которому Go ищет пакеты. Давайте рассмотрим это подробнее и предложим решение.
1. Понимание структуры проекта Go
Go имеет строгую структуру для организации проектов. Обычно, Go ожидает, что ваш код будет находиться в определённой директории, которая соответствует его модульной системе. Пакеты в Go определяются по полной пути к директории. Если вы хотите создать свой проект, рекомендуется использовать модули Go, которые упрощают управление зависимостями и версиями.
2. Создание правильной структуры проекта
Для того чтобы избежать ошибок, вы можете сделать следующее:
-
Создайте новый модуль Go:
В корне вашего проекта выполните команду:go mod init myproject
Здесь
myproject
— это название вашего модуля. Вы можете использовать любое название, но старайтесь, чтобы оно было уникальным. -
Скопируйте ваш код в правильную директорию:
Убедитесь, что ваш файлhello.go
находится в новой структуре с модулем. Можно просто добавить ваш файл в директорию проекта, чтобы она выглядела так:project/ ├── hello.go └── go.mod
3. Исправление ошибки компиляции
После инициализации модуля и создания правильной структуры, вам больше не должно быть проблем с запуском вашего кода. Запустите:
go run hello.go
или с использованием команды go build
:
go build hello.go
./hello
4. Устранение причины большого размера исполняемого файла
Размер вашего исполняемого файла в 9919 строк может быть связан с неправильной компиляцией или конфликтующими библиотеками. Убедитесь, что вы используете последнюю версию Go и очистите кэш:
go clean -cache
5. Заключение
Следуйте указанным шагам для устранения проблемы с установкой модуля и структуры вашего проекта. Использование модулей в Go значительно упростит управление кодом и его зависимостями, что, в свою очередь, поможет избежать подобных ошибок в будущем. Если у вас остались вопросы или проблемы, вы можете обратиться к официальной документации Go или сообществу разработчиков для получения дополнительной помощи.