簡體   English   中英

如何在golang中使用空格距離輸入

[英]How to take input with whitespace distance in golang

我想根據 golang 中的空白從用戶那里獲取一些輸入。 目前的代碼是...

fmt.Scanf("%d\n", &N)
var a [10]int
for n := 0; n < N; n++ {
    fmt.Scanf("%d\n", &a[n])
}

這段代碼將讓我在終端中輸入...

5
1
2
3
4
5

所以,a[] = {1,2,3,4,5} 但我想在終端中輸入...

5
1 2 3 4 5

所以,a[] = {1,2,3,4,5} 所以請幫忙找出我應該在上面的 for 循環中改變什么。

你可以嘗試這樣的事情。 這將讀入第一個數字,這是您要創建的數組的大小,然后下一行將是數組中長度為 (n) 的項目

import (
    "bufio"
    "fmt"
    "io"
    "os"
    "strconv"
    "strings"
)

func main() {
  reader := bufio.NewReaderSize(os.Stdin, 1024 * 1024)

  nTemp, err := strconv.ParseInt(readLine(reader), 10, 64)
  checkError(err)
  n := int32(nTemp)

  arrTemp := strings.Split(readLine(reader), " ")

  var arr []int32

  for i := 0; i < int(n); i++ {
      arrItemTemp, err := strconv.ParseInt(arrTemp[i], 10, 64)
      checkError(err)
      arrItem := int32(arrItemTemp)
      arr = append(arr, arrItem)
  }

  fmt.Printf("%#v, arr", arr)
}

因此,當我嘗試使用您給定的輸入時,例如:

5
1 2 3 4 5

// I get the following:
[]int32{1, 2, 3, 4, 5}, arr

在任何特色問題中,您提出的問題似乎在Hackerrank等網站中很常見。

謝謝 martinomburajr 和 Casey Flynn。

我瀏覽了您的答案,並進行了自己的反復試驗。 終於找到了somultion。

var N int
fmt.Scanf("%d\n", &N)
a := make([]int, N)
for n := range a {
    fmt.Scanf("%d", &a[n])
}
fmt.Scanf("\n")

它可以很好地滿足我的要求。 非常感謝你的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM