为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用导入的包中的函数

无法使用导入的包中的函数

Go
动漫人物 2022-09-19 17:18:20
我当前的目录设置如下:-- /webserver      |     /ftp      |-> ftp.go      |-> go.mod   |->server.go   |->go.mod服务器.go 页面标题package mainimport (    [..]    "../webserver/ftp" // issue package)func main() {    [..]    ftp.test()}页面package ftpimport "fmt"func test() {    fmt.Println("YES!")}这是我在控制台“PROMBLEMS”选项卡中似乎无法理解的部分,ftp.go文件被保存。在我保存服务器.go文件之前,请使用“../网络服务器/ftp/“ 控制台显示以下内容:当我保存服务器.go时,它会删除“./网络服务器/ftp”,我甚至将其添加到go src中,使其成为“ftp”而不是“..。/网络服务器/ftp“。我得到同样的结果。不知道我做错了什么。基本上,我想完成的是:有一个函数文件夹,并在该文件夹中有函数(函数.go),以保持server.go页面尽可能干净。
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

你在这里有几个问题。

  1. ftp/go.mod不应该存在。虽然可以在单个存储库中拥有多个 Go 模块,但这是非常高级的用法,并且很少有用。除非您绝对知道自己需要此功能,并且已经非常习惯于创建和发布 Go 模块,否则请不要这样做。

  2. Go 不支持相对导入。 是无效的导入路径*。使用完全限定的导入路径,即import "../webserver/ftp"import "github.com/username/projectname/webserver/ftp"

    此处使用的路径取决于您在顶级文件行上声明的模块名称。modulego.mod

  3. 不能导入未导出的值。

    已在 中定义。这是未导出的,因为它以小写字母开头。只有函数、变量或其他以大写字母开头的符号才会在 Go 中导出。请尝试。func test() stringftp.gofunc Test() string

*有些人会说“但是我用过,它起作用了!是的,它可以在非常特殊的情况下工作。但它的行为并不可靠,因此您永远不应该依赖它,除非在非常特定测试类型的情况下。import ".../foo"


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 50 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信