Я использую VS Code с расширением Go, но заметил, что когда я щелкаю правой кнопкой мыши по методу и выбираю «Перейти к определению», определение не найдено.Например,
Это пример приложения, созданного с помощью 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
Я не понимаю это сообщение об ошибке: не существует ли пакет, содержащий файл?