Go中的嵌套循环数组不像其他语言的数组那样

时间:2014-09-24 11:30:57

标签: arrays for-loop go

为什么此功能会打印出[83 83 83 83 83]而不是[98 93 77 82 83]的数组?

package main

import "fmt"

func main() {
    var x [5]float64
    scores := [5]float64{ 98, 93, 77, 82, 83, }

    for i, _ := range x {
        for j, _ := range scores {
            // fill up x array with elements of scores array
            x[i] = scores[j]
        }
    }
    fmt.Println(x)
}

2 个答案:

答案 0 :(得分:5)

因为您使用x[i]的每个值填充scores 你有一个额外的循环。

由于切片scores的最后一个值为83,因此您再次填充x,每个广告位为83。

更简单的是:

for i, _ := range x {
    // fill up x array with elements of scores array
    x[i] = scores[i]
}

play.golang.org

输出:[98 93 77 82 83]

答案 1 :(得分:1)

你有太多的循环。写:

package main

import "fmt"

func main() {
    var x [5]float64
    scores := [5]float64{98, 93, 77, 82, 83}
    for i := range x {
        x[i] = scores[i]
    }
    fmt.Println(x)
}

输出:

[98 93 77 82 83]

在这种情况下,你可以简单地写:

package main

import "fmt"

func main() {
    var x [5]float64
    scores := [5]float64{98, 93, 77, 82, 83}
    x = scores
    fmt.Println(x)
}

输出:

[98 93 77 82 83]