Модули и локальные пакеты

Не пойму, почему я не могу обратиться к функции пакета который лежит в папке internal.
Замечаний с стороны компилятора нет, при вызове получаю ошибку - "package command-line-arguments cmd\main.go:5:2: use of internal package test/internal not allowed"
Если переименовать папку internal проблема уходит

Структура проекта

test
├─ go.mod
├─ internal
│  └─ handler
│     └─ opkg.go
├─ main.go

main.go

package main

import (
    "fmt"

    i "test/internal/handler"
)

func main() {
    v := i.GetDouble(15)
    fmt.Println(v)
}

opkg

package internal

func GetDouble(a int) int {
    return a * 2
}

go.mod

module test

go 1.18

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

Автор решения: Данил

main.go

package main

import (
    "log"
    s "test/internal/handler"
)

func main() {
    log.Println(s.GetDouble(15))
}

test/internal/handler/opkg.go

package internal

func GetDouble(a int) int {
    return a * 2
}

У меня все работает, ошибок никаких нету

Вывод: введите сюда описание изображения

→ Ссылка
Автор решения: Akalit

Так работает корректно go run .

→ Ссылка