我的目录中有两个go文件。

  Go
   ├── mains.go
   └── vars.go

mains.go和vars.go的代码如下:
mains.go
--------
package main

import "fmt"

func main() {
     fmt.Println("This is the mains file")
}


vars.go
--------
package main

import "fmt"

func main() {
     fmt.Println("This is the vars file")
}

使用terminal命令分别运行文件时



我正在得到输出。当我使用VScode时,出现以下错误



由于此错误,我无法运行代码。将每个文件分成多个文件夹时,该代码运行良好。我试图在保存之前从文件中删除主要声明,但是自动完成/自动格式化功能会自动填充包,主要导入“fmt” 命令。我的怀疑是:
  • 这是编辑器的问题吗? (随着终端命令的运行
    好的)
  • 还有其他推荐的IDE吗?

  • 最佳答案

    在同一个包中两次声明main函数没有意义。您提到代码可以很好地将mains.govars.go文件放置在单独的文件夹中。这是预料之中的,这是需要做的-将文件放在不同的文件夹中。

    但是,如果需要同时运行这两个功能,请使用如下定义的简单goroutine更改设置:

    // main.go
    package main
    
    import (
              "fmt"
              "sync"
    )
    
    var wg sync.WaitGroup
    
    func main() {
         fmt.Println("This is the mains file")
    
         wg.Add(1)
         go vars()
    
         // do other stuff...
         wg.Wait()
    }
    
    // vars.go
    package main
    
    import "fmt"
    
    func vars() {
         fmt.Println("This is the vars file")
         // do other stuff...
    
         wg.Done()
    }
    

    这样,您就可以在同一程序包中同时运行两个功能。由于函数不能具有相同的函数名:main(),因此您需要像我所做的那样将其中之一更改为其他名称。

    但是请注意,您可以简单地调用vars()函数而无需同时调用。

    09-10 04:08
    查看更多