导入包名与文件名不同的本地包
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
。
我尝试了以下方法:
-
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"
)
正如我在此 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"
)
我有一个具有这种结构的 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
。
我尝试了以下方法:
-
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" )
正如我在此 post
正如评论指出的那样,我找到了解决方案:
首先,我必须重命名所有文件夹以使用它们包含的包的名称
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"
)