如何在Golang中连接一个包的几个文件中的数据?

时间:2014-09-03 14:51:26

标签: arrays map go package packages

例如,结构:

 /src
   main.go
   /test
     test1.go
     test2.go

,main.go

package main

import (
    "fmt"
    "./test"
) 

func main(){
    fmt.Println(test.A)
}

test1.go:

package test

var A  = []int{1,2,3}

test2.go:

package test

var A = []int{3,7}

我明白,这是一个错误的代码,它会抛出错误,因为我正在重新声明变量。我只想问一下,我应该从哪个方式连接一个包的文件中的同名变量?

2 个答案:

答案 0 :(得分:2)

您可以使用init()函数启动切片并附加到切片:

test1.go:

package test

var A  = []int{}

func appendA(v ...int) {
   A = append(A, v...)
   sort.Ints(A) // sort to make deterministic order per @peterSO comment
}

func init() {
   appendA(1, 2)
}

test2.go:

package test

func init() {
   appendA(3, 4)
}

答案 1 :(得分:1)

例如,

test1.go

package test

var A []int

func init() {
    A = append(a1, a2...)
}

var a1 = []int{1, 2, 3}

test2.go

package test

var a2 = []int{3, 7}

main.go

package main

import (
    "fmt"
    "test"
)

func main() {
    fmt.Println(test.A)
}

输出:

[1 2 3 3 7]