gpt4 book ai didi

multidimensional-array - 戈朗 : Multidimensional array using slice of slice strategy resulting in strange output

转载 作者:IT王子 更新时间:2023-10-29 01:02:04 25 4
gpt4 key购买 nike

我在 golang 中为二维数组使用以下简单代码,其中 APPEND 函数导致重复值而不是追加。

package main

import "fmt"

func main() {
var n int
fmt.Scanf("%d", &n)
array := [][]int{}
row := make([]int, n)
for _, _ = range row {
for j, _ := range row {
fmt.Scanf("%d", &row[j])
}
fmt.Println("Printing current Row", row)
array = append(array, row)
fmt.Println("Printing curent Array", array)
}
fmt.Println("Final Array", array)
}

但奇怪的是,这并没有出乎意料。如果假设我希望这件事发生(输入)

2
1 2
3 4

然后我运行这个程序,我得到这个作为返回

2     //Dimension for matrix
1 //Iteration one begins
2
Printing current Row [1 2]
Printing curent Array [[1 2]]
3 //Iteration two begins
4
Printing current Row [3 4]
Printing curent Array [[3 4] [3 4]]
Final Array [[3 4] [3 4]]

我不明白为什么 APPEND 函数会导致重复条目。想知道如何纠正这也是潜在的CONCEPT

最佳答案

出现此行为是因为您没有将新的 row slice 添加到您的 array。每次迭代都简单地读入相同的 row slice 以覆盖先前的值。尝试以下:

func main() {
var n int
fmt.Scanf("%d", &n)
array := [][]int{}

for i := 0; i < n; i++ {
row := make([]int, n) // create a new slice to add next row values
for j, _ := range row {
fmt.Scanf("%d", &row[j])
}
fmt.Println("Printing current Row", row)
array = append(array, row)
fmt.Println("Printing curent Array", array)
}
fmt.Println("Final Array", array)
}

关于multidimensional-array - 戈朗 : Multidimensional array using slice of slice strategy resulting in strange output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38607117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com