Go语言打印输入的数组

4

我现在正在学习Go语言,当我尝试打印输入的数组时遇到了问题。我的代码如下:

package main

import (
    "fmt"
)

func main() {
    var n int
    fmt.Scan(&n)
    set(n)
}

func set(n int) {
    a := make([]int, n)
    for i := 0; i < n; i++ {
        fmt.Scan(&a[i])
    }
    for y := 0; y < n; y++ {
        fmt.Println(a[y])
    }
    return
}

我的问题是,当我将一个数字作为数组大小输入时,该数字总是被打印出来。 例如,当我输入了8作为数组大小,然后输入了数组的值10 9 8 7 6 5 4 3,那么我得到了错误的输出:8 10 9 8 7 6 5 4。正确的输出应该是10 9 8 7 6 5 4 3。


我没有看到任何问题。尝试一次性打印整个数组。 - JimB
我无法重现那个问题,您使用的Go版本是什么?还有什么操作系统? - OneOfOne
http://play.golang.org/p/gHBNoy_HGN 运行正常。 - OneOfOne
@Exill:对于Go版本和操作系统,请发布go version命令的输出。 - peterSO
我使用的是Go 1.3版本和操作系统Windows + LiteIDE。 - Exill
3个回答

3
package main
import ("fmt")
func main() {
  var n int
  fmt.Scan(&n)
  set(n)
}

func set(n int) {
  a := make([]int, n)
  for i := 0; i < n; i++ {
      fmt.Scan(&a[i])
    }
  fmt.Println(a)
 }

1
请添加一些描述-仅限代码答案 - prasun

1

目前无法复制问题。对于示例

package main

import (
    "bytes"
    "fmt"
    "io"
)

func main() {
    var n int
    sampleInput := bytes.NewBufferString("3 1 2 3")
    fmt.Fscan(sampleInput, &n)
    set(sampleInput, n)
}

func set(input io.Reader, n int) {
    a := make([]int, n)
    for i := 0; i < n; i++ {
        fmt.Fscan(input, &a[i])
    }
    for y := 0; y < n; y++ {
        fmt.Println(a[y])
    }
    return
}

这是你的程序的变体。它具有预期的行为:将读入切片中的数字 1、2、3 打印出来。


0
i:=0
var a[5] int
for(i<5){
fmt.Print("Enter Input")
var input int
fmt.Scanf("%d",&input)
a[i]=input
i+=1
}
fmt.Print(a)

这对我来说似乎有效。请参考。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接