Не импортируются пакеты Golang

Пишу программу на golang и возникла проблема что при правильных путях к пакетам появляется ошибка package ... is not in std

Имею такую программу

package statistic

import (
    "context"
    "statistic/internal/config"
    "statistic/internal/postgres"
    "log/slog"
    "os"
)

func main() {
    log := slog.New(
        slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelDebug}),
    )

    cfg := config.MustLoadByPath("./config/config.yaml")
    ctx := context.Background()

    db, err := postgres.NewStorageWithPool(ctx, cfg.Postgres, log)
    if err != nil {
        log.Error("failed init db " + err.Error())
        return
    }

    if err = db.Pool.Ping(ctx); err == nil {
        log.Info("db connected suc")
    } else {
        log.Info("db connected failed " + err.Error())
    }
}

структура файлов:

в go mod название statistic, даже в самой IDE ничего красным не подчёркивает, а при клике + ctrl перекидывает в нужный файл, но при запуске с go run cmd/main.go пишет

cmd\main.go:5:2: package statistic/internal/config is not in std (C:\Program Files\Go\src\statistic\internal\config) cmd\main.go:6:2: package statistic/internal/postgres is not in std (C:\Program Files\Go\src\statistic\internal\postgres)

Ради интереса попробовал сделать проект с пустой структурой в internal/postgres и импортировать его в main.go main.go Но при запуске всё та же ошибка

тестовый проект

cmd\main.go:3:8: package dummy/internal is not in std (C:\Program Files\Go\src\dummy\internal)

Может это быть связано с версией golang? у меня go1.24.2 windows/amd64


Ответы (1 шт):

Автор решения: Pak Uula

Что-то вы нам недоговариваете. Я попробовал ваш main.go с заглушками на месте функций из statistic/internal, и у меня всё скомпилировалось. Но не запустилось: package command-line-arguments is not a main package. Собственно, так и ожидалось - пакеты с функцией main должны тоже называться main.

Если в main.go поменять на package main, то всё благополучно запускается:

$ go run cmd/main.go 
time=2025-04-18T09:39:05.399+03:00 level=INFO msg="db connected suc"

У меня go version go1.23.6 linux/amd64, IDE - VS Code. Файлы из игрушечного проекта здесь: https://pastebin.com/L0VzCiWc

→ Ссылка