登录
首页 >  Golang >  Go问答

“godef:必须至少有一个包含该文件的包”,即使该文件确实有一个包?

来源:stackoverflow

时间:2024-04-19 22:21:35 217浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《“godef:必须至少有一个包含该文件的包”,即使该文件确实有一个包?》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我正在使用带有 go 扩展的 vs code,但我注意到当我右键单击某个方法并选择“转到定义”时,找不到任何定义。例如,

这是我使用 cobra 生成的示例应用程序:

cobra init mycobraapp --pkg-name=github.com/khpeek/mycobraapp

我希望这能起作用,因为 mycobraapp 目录的组织方式如下

.
├── license
├── cmd
│   └── root.go
└── main.go

其中 cmd/root.go 包含

package cmd

import (
  "fmt"
  "os"
  "github.com/spf13/cobra"

  homedir "github.com/mitchellh/go-homedir"
  "github.com/spf13/viper"

)


var cfgfile string


// rootcmd represents the base command when called without any subcommands
var rootcmd = &cobra.command{
  use:   "mycobraapp",
  short: "a brief description of your application",
  long: `a longer description that spans multiple lines and likely contains
examples and usage of using your application. for example:

cobra is a cli library for go that empowers applications.
this application is a tool to generate the needed files
to quickly create a cobra application.`,
  // uncomment the following line if your bare application
  // has an action associated with it:
  //    run: func(cmd *cobra.command, args []string) { },
}

// execute adds all child commands to the root command and sets flags appropriately.
// this is called by main.main(). it only needs to happen once to the rootcmd.
func execute() {
  if err := rootcmd.execute(); err != nil {
    fmt.println(err)
    os.exit(1)
  }
}

我还尝试从命令行调用 godef,但收到此错误消息:

~/g/s/g/k/myCobraApp> godef -f main.go "cmd.Execute()"
godef: There must be at least one package that contains the file

我不明白此错误消息:是否有包含该文件的包?


解决方案


事实证明,通过在我的 ~/.config/fish/config.fish 中将 GO111MODULE 环境变量设置为 on 来破坏此功能。当我删除它时,“转到定义”按钮再次起作用。

以上就是《“godef:必须至少有一个包含该文件的包”,即使该文件确实有一个包?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>