Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Autocomplete Revel框架和Go代码完成_Autocomplete_Go_Code Completion_Revel - Fatal编程技术网

Autocomplete Revel框架和Go代码完成

Autocomplete Revel框架和Go代码完成,autocomplete,go,code-completion,revel,Autocomplete,Go,Code Completion,Revel,可以使用带有Go代码完成支持的框架。据我所知,gocode实用程序需要将代码编译到库中的pkg子文件夹中才能正常工作,但框架是动态编译的 我对这个话题有点迷茫。正确的方法是调用相关子包的go安装吗?这似乎可行,但从我的角度来看,这并不是最优雅的方式 希望有人能给我指出正确的方向 编辑:问题只集中在我作为Revel应用程序的一部分编写的源代码上。下载的软件包具有预期的自动完成功能 EDIT2:这是迄今为止我找到的最好的解决方案-在项目的app/tmp子文件夹上执行go-get命令。因此,如果您的项

可以使用带有Go代码完成支持的框架。据我所知,
gocode
实用程序需要将代码编译到库中的pkg子文件夹中才能正常工作,但框架是动态编译的

我对这个话题有点迷茫。正确的方法是调用相关子包的go安装吗?这似乎可行,但从我的角度来看,这并不是最优雅的方式

希望有人能给我指出正确的方向

编辑:问题只集中在我作为Revel应用程序的一部分编写的源代码上。下载的软件包具有预期的自动完成功能


EDIT2:这是迄今为止我找到的最好的解决方案-在项目的
app/tmp
子文件夹上执行
go-get
命令。因此,如果您的项目被称为my_project,那么您将调用类似于
go get my_project/revel/app/tmp
的内容,因为此文件夹包含项目的主要功能,它将提取所有依赖项并将它们构建到包中。如果tmp文件夹不存在,您必须对项目执行
revel run
,并打开web应用程序,以便动态创建它。希望这至少有一点帮助。我仍在寻找更好的选择:)

您的revel应用程序需要驻留在$GOPATH/src文件夹中,然后代码完成将适用于您的web应用程序。

更新 Revel的
Harnese
编译过程已经改变,或者
gocode
已经改进。但现在一切都开箱即用。不需要额外的努力

旧答案 我也面临同样的问题。我的解决方案是修改后的编辑2解决方案。 在我的
app/init.go
中,我添加了:

import "os/exec"


因此,现在在开发模式下,它会在每次重新编译revel项目时自动重新编译所有包。

您使用什么编写Go?例如,升华文本+GoPublime插件使用安装在GOPATH上的软件包,在将其添加到软件包导入时提供“自动完成”功能。Revel,作为“GoGettable”,应该以同样的方式工作。我使用LiteIDE,GOPATH像往常一样设置到我的工作区。使用go get安装的软件包具有自动完成功能。开始编写Revel应用程序时出现问题。当我运行应用程序时,我编写的源代码没有编译到pkg子文件夹中,因此我的代码没有自动完成。很抱歉,如果这篇文章不清楚,我将对其进行编辑以澄清问题。它确实位于/src文件夹中。”gocode'实用程序基于在/pkg子文件夹中创建的*.a库以及定义/pkg文件夹中的子文件夹(gocode将在其中查找)的GOOS和GOARCH变量完成代码
// Build the project packages on app start so it's possible to use autocomplete.
revel.OnAppStart(func() {
    if revel.Config.BoolDefault("mode.dev", false) {
        go func() {
            _, err := exec.Command("go", "get", "bitbucket.org/USERNAME/PROJECT/app/tmp").Output()
            if err != nil {
                revel.ERROR.Printf("failed to 'go get' project, error: %v", err)
            }
        }()
    }
})