go - 导入包名与文件名不同的本地包
问题描述
我有一个具有这种结构的 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 ( "../www" )
-
import ( "../www/apictrl" )
-
import ( "../apictrl" )
-
import ( "/mnt/c/Users/myusername/path/toproject/src/apictrl" )
-
import ( "/mnt/c/Users/myusername/path/toproject/src/www/apictrl" )
-
import ( "/mnt/c/Users/myusername/path/toproject/src/www" )
正如我在这篇文章中看到的Import package & type但它们都不起作用。
解决方案
正如评论指出的那样,我找到了解决方案:
首先,我必须重命名所有文件夹以使用它们包含的包的名称
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"
)
推荐阅读
- azure-devops - 确保不能再使用旧的任务组版本
- java - 响应正文中的 Spring Batch 作业执行状态
- c# - 如何阅读 Word VSTO 中的当前文档?
- c++ - 模板化一个虚函数,管理来自单个类的不同类属性
- reactjs - 收到错误“操作必须是普通对象。使用自定义中间件进行异步操作。” 使用 AXIOS 时在 React Native 中
- iis - IIS 日志在一台服务器与另一台服务器上有更多信息
- fabricjs - SVG 到 backgroundImage 和 overlayImage
- angular - 嵌入式模板上的任何指令均未使用属性绑定 matHeaderRowDef
- r - 从单个图像中的单个数据帧绘制许多线图
- ios - 在 iOS 12 中获取数据