【问题标题】:GO in IntelliJ IDEA. Multiple File and Error Undefined: Data进入 IntelliJ IDEA。多个文件和错误未定义:数据
【发布时间】:2015-12-07 02:48:23
【问题描述】:

我想使用 IntelliJ IDE 社区版GO (GoLang) 中编写代码。我安装了正确的插件,并安装了所有需要的工具来构建应用程序。 我的应用程序包含以下两个文件。每个都在目录 ../EventServer 中。

  • Main.go
  • Data.go

如果我想使用函数 Run (Ctlr+Shift+F10) 从 IntelliJ 运行项目并且我得到以下错误

/usr/lib/go/bin/go build -o "/tmp/Build Main.go and run0go" -gcflags "-N -l" /my/home/blah/EventServer/Main.go
# command-line-arguments
./Main.go:11: undefined: Data

我可以毫无问题地从终端编译代码进入带有项目和执行命令的目录

:~/Pulpit/EventServer$ go build
./EventServer 
Hello
dane w strukturze someone

树目录和文件看起来像

EventServer$ tree -a
.
├── Data.go
├── EventServer
├── EventServer.iml
├── .idea
│   ├── compiler.xml
│   ├── copyright
│   │   └── profiles_settings.xml
│   ├── libraries
│   │   └── GOPATH__EventServer_.xml
│   ├── misc.xml
│   ├── modules.xml
│   ├── .name
│   ├── vcs.xml
│   └── workspace.xml
└── Main.go

我认为要运行的命令很糟糕,因为编译器尝试仅使用一个文件 Main.go 而不是所有文件来构建程序。正确的命令应该是

$ go run *.go 

但我不知道我可以在哪里设置。

我还将 GOPATH 设置为:

export GOPATH=$HOME/Pulpit/EventServer

这也无济于事

代码

Main.go

package main

import (
    "fmt"

)

func main() {

    fmt.Println("Hello")
    abcd := Data{"someone" , "1234567"}
    fmt.Printf("dane w strukturze %s ", abcd.Name)

}

还有 Data.go

package main


type Data struct {
Name string
Phone string

}

系统:LINUX

【问题讨论】:

    标签: intellij-idea go


    【解决方案1】:

    ----------已解决---------- ----------------------已解决----------

    步骤

    • 项目必须在目录for/example/MyProject/src/HERE_DIRECTORY_WITH_YOUR_SOURCE_GO_FILE中找到 子目录src很重要
    • 转到Run --> Edit Configurations
    • 找到下面的位置

    • Run Kind 更改为Package
    • 在位置Package 用你的代码写你的文件夹(应该突出显示它是正确的)
    • 点击左上角的加号图标,然后添加Go Application
    • 应用更改
    • 在右上角主窗口IDE你看到小图标播放

    • 选择早期定义的Go Application my is Unnamed
    • 点击播放
    • 快乐 :D

    【讨论】:

    • 谢谢!已经可以使用调试器了吗?
    • 没错。我经常使用调试器。如果我记得我与他的设置无关,只是工作,但go 的调试器对我来说微不足道,但工作,将来可能会改变。如果我帮助你,请给我投票:)
    • 对我来说,这说明在你的情况下找不到包 RightApp 包没有找到
    • 你成就了我的一天。
    • 轰隆隆。在 Intellij + Gogland 中为我修复了
    【解决方案2】:

    Sarp Kaya,只需按照 Mbded 的步骤操作即可。额外的步骤是,确保您的 additional GOPATH 应该在那里。

    例如,这是我们的~/.profile GOPATH

    export GOPATH=$HOME/lib/Go:$HOME/Development/Go
    

    go get 进程等使用的第一个路径,而您的活动 go 开发目录转到下一个路径。

    根据我们的配置,RightApp 的确切路径应该是$HOME/Development/Go/src/RightApp

    【讨论】:

      【解决方案3】:

      假设您有一个项目,其中包含 src/ 子目录和两个 .go 文件:hello.go 和 typetest.go,它们都定义了相同的包“main”。其中之一(hello.go)也实现了 func main()。

      要使其整体编译,您需要确保正确配置两件事:GOPATH 和运行/调试配置。

      打开项目库/GOPATH 设置:

      对于 Gogland

      文件->设置->开始

      对于 Intellij IDEA

      文件 -> 设置 -> 语言和框架 -> Go -> Go 库

      确保项目的 GOPATH 看起来像这样:

      GOPATH settings

      接下来,打开 Run -> Edit Configurations 并确保您的配置类似于:

      Run/Debug configuration

      【讨论】:

        【解决方案4】:

        您可以在运行/调试配置中添加第二个文件(在您的情况下为 Data.go)作为 Go 工具参数字段。我在这里读到了这个:https://github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/2013 接近讨论结束。下面的示例(我使用了 2 个文件 HelGo.go 和 aaa.go)对我有用:

        Go Run Configuration with 2 files

        这两个文件中反对的 Intellij 位于不同的文件夹中,因此它们必须是相同的包(主)。 另一方面,我根本无法在此页面上提出任何建议。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-27
          • 2019-11-25
          • 2015-09-21
          • 2023-03-08
          • 2021-01-07
          • 1970-01-01
          • 1970-01-01
          • 2013-08-22
          相关资源
          最近更新 更多