如何从Golang中的不同函数将一个数组的元素复制到另一个数组

时间:2016-08-13 10:48:11

标签: arrays function go copy return

我想知道如何将函数返回的一个数组的元素复制到另一个函数中的另一个数组中。

例如:

 func PossibleMoves()[8] int{
 /* calculations*/
 return Posmoves[]
}

func traversal(){

 var currentarray [8] int

copy(Posmoves,currentarray)
}

这显示错误说未定义的Posmoves,我应该如何纠正它...

1 个答案:

答案 0 :(得分:1)

Copy函数与两个切片一起用作参数(1 -> dst, 2 -> src),然后,您必须使用两个切片或将[8]int数组转换为切片,您可以使用{{1}执行此操作运算符。此运算符将返回一个将引用[:]数组的切片。

[8]int未定义,因为您没有在任何地方定义。然后,您可以创建一个全局变量:

Posmoves

Playground

它返回var Posmoves [8]int func main() { PossibleMoves() traversal() fmt.Println(Posmoves) } func PossibleMoves() [8]int { /* calculations*/ return Posmoves } func traversal() { var currentarray [8]int copy(Posmoves[:], currentarray[:]) } ,因为两个数组都被初始化为零值(默认值)。

您也可以执行[0 0 0 0 0 0 0 0],这将从trasversal()获得Posmoval array。所以:

PossibleMoves()

Playground

输出将再次出现:func main() { traversal() } func PossibleMoves() [8]int { /* calculations*/ var Posmoves [8]int return Posmoves } func traversal() { var currentarray [8]int Posmoves := PossibleMoves() copy(Posmoves[:], currentarray[:]) fmt.Println(currentarray) }

我希望它可以帮到你! : - )