Go项目中的多个主文件

时间:2018-08-16 10:37:00

标签: go

我有一个Go项目。当我运行程序main.go(具有功能main)时,该程序将服务于提供JSON对象的Web服务器。

在同一文件夹中,我还有另一个文件serializedata.go(具有功能main),该文件将JSON对象写入由Web服务器提供服务的文件中。

现在,当我尝试运行go install时,出现此错误:

  

./ serialize_data.go:17:在此块中先前重新声明了main   在./main.go:13

处声明

我想将这两个文件关联在一起。必须先对测试数据进行序列化,然后才能提供服务。

如何防止构建serialization.go文件?

我来自python world,很容易将这些utils文件分开。

3 个答案:

答案 0 :(得分:1)

serialize_data.go应该放置在另一个文件夹中,然后放置go run serialize_data.go

答案 1 :(得分:0)

在名为serialization.go的主包中创建一个文件。但可以使用任何带有大写字母的exported函数来更改函数main的名称,然后在main.go文件内调用它。每个软件包只能有一个主文件。因此,如果要创建一个内部带有main()函数的文件,请在另一个包中声明该文件。

例如,您的main.go应该看起来像

package main

func main(){
    Serialize()
}

内部serialization.go文件用作

package main

func Serialize(){
   fmt.Println("Serialize")
}

调用main内部的上述功能以在网络浏览器上投放

答案 2 :(得分:0)

虽然不是一个好主意,但是如果避免使用go install,则可以从同一文件夹中构建多个可执行文件。我的一个项目有一个tools文件夹,其中包含几个我使用go build构建的可执行文件。例如:

$ ls
Makefile cat.go find.go ls.go
$ cat Makefile
%: %.go
    go build -o $@ $<
$ make ls
go build -o ls ls.go
$ ./ls
Makefile cat.go find.go ls.go