Go Lang打印输入数组

时间:2014-08-26 16:41:28

标签: arrays input go

我正在研究Go lang,我在尝试打印输入数组时遇到了问题。我的代码是这样的:

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.Iit应该是10 9 8 7 6 5 4 3。

3 个答案:

答案 0 :(得分:1)

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 :(得分:0)

无法复制问题。对于example

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。

答案 2 :(得分: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)

这似乎对我有用。请参阅。