我想知道如何将函数返回的一个数组的元素复制到另一个函数中的另一个数组中。
例如:
func PossibleMoves()[8] int{
/* calculations*/
return Posmoves[]
}
func traversal(){
var currentarray [8] int
copy(Posmoves,currentarray)
}
这显示错误说未定义的Posmoves,我应该如何纠正它...
答案 0 :(得分:1)
Copy
函数与两个切片一起用作参数(1 -> dst, 2 -> src)
,然后,您必须使用两个切片或将[8]int
数组转换为切片,您可以使用{{1}执行此操作运算符。此运算符将返回一个将引用[:]
数组的切片。
[8]int
未定义,因为您没有在任何地方定义。然后,您可以创建一个全局变量:
Posmoves
它返回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()
输出将再次出现: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)
}
我希望它可以帮到你! : - )