首页 > 解决方案 > 导入包名与文件名不同的本地包

问题描述

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

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

当我使用带有 WSL Debian 的 Visual Studio Code 进行编码时,在我的 main.go 文件中undefined: apictrl写入时出现错误。apictrl.StartRouter()

我尝试了以下方法:

正如我在这篇文章中看到的Import package & type但它们都不起作用。

标签: govisual-studio-codepackagewindows-subsystem-for-linux

解决方案


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

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

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"
) 

推荐阅读