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

我当前的目录设置如下:


-- /webserver

      |

     /ftp

      |-> ftp.go

      |-> go.mod

   |->server.go

   |->go.mod

服务器.go 页面标题


package main


import (

    [..]

    "../webserver/ftp" // issue package

)


func main() {

    [..]

    ftp.test()

}

页面


package ftp


import "fmt"


func test() {

    fmt.Println("YES!")

}

这是我在控制台“PROMBLEMS”选项卡中似乎无法理解的部分,ftp.go文件被保存。在我保存服务器.go文件之前,请使用“../网络服务器/ftp/“ 控制台显示以下内容:

http://img3.mukewang.com/6328340d00018ca405280134.jpg

当我保存服务器.go时,它会删除“./网络服务器/ftp”,我甚至将其添加到go src中,使其成为“ftp”而不是“..。/网络服务器/ftp“。我得到同样的结果。

http://img.mukewang.com/632834170001f8f504400154.jpg

不知道我做错了什么。

基本上,我想完成的是:

有一个函数文件夹,并在该文件夹中有函数(函数.go),以保持server.go页面尽可能干净。


动漫人物
浏览 51回答 1
1回答

PIPIONE

你在这里有几个问题。ftp/go.mod不应该存在。虽然可以在单个存储库中拥有多个 Go 模块,但这是非常高级的用法,并且很少有用。除非您绝对知道自己需要此功能,并且已经非常习惯于创建和发布 Go 模块,否则请不要这样做。Go 不支持相对导入。 是无效的导入路径*。使用完全限定的导入路径,即import "../webserver/ftp"import "github.com/username/projectname/webserver/ftp"此处使用的路径取决于您在顶级文件行上声明的模块名称。modulego.mod不能导入未导出的值。已在 中定义。这是未导出的,因为它以小写字母开头。只有函数、变量或其他以大写字母开头的符号才会在 Go 中导出。请尝试。func test() stringftp.gofunc Test() string*有些人会说“但是我用过,它起作用了!是的,它可以在非常特殊的情况下工作。但它的行为并不可靠,因此您永远不应该依赖它,除非在非常特定测试类型的情况下。import ".../foo"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go