为什么此功能会打印出[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)
}
答案 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]
}
输出:[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]