导入包名与文件名不同的本地包

Import local package with a package name different than the file name

我有一个具有这种结构的 Go 项目

src/
    main.go (package main.go)
    www/
        api.go (package apictrl)
        url_mapping.go (package apictrl)
    core/
        model.go (package mlsnd)

当我使用 Visual Studio 代码和 WSL Debian 进行编码时,我在 main.go 文件中写入 apictrl.StartRouter() 时收到错误 undefined: apictrl

我尝试了以下方法:

正如我在此 post 中看到的,但其中 none 有效。

正如评论指出的那样,我找到了解决方案:

首先,我必须重命名所有文件夹以使用它们包含的包的名称

src/
    main/
        main.go (package main)
    apictrl/
        api.go (package apictrl)
    mlsnd/
        model.go (package mlsnd)

在 main.go 中,我必须使用 go.mod 中给模块的名称导入想要的包(使用 go mod init package.name 创建)

import (
    "package.name/src/apictrl"
)