2016-09-19 191 views
2

我想從stdin中讀取一組整數值並將其放入整數片中。如果不使用for循環,最快的方法是什麼?在Golang中讀取一組由空格分隔的整數

例如

Enter the number of integers 
3 
Enter the integers 
23 45 66 

如何將這些值放入整數片?

+2

爲什麼不使用循環? – 2016-09-19 03:58:56

+0

聽起來像一個家庭作業或面試問題:) – ain

回答

1

反正有環路,這裏沒有forgoto環(試試The Go Playground):

package main 

import "fmt" 

func main() { 
    fmt.Println(`Enter the number of integers`) 
    var n int 
    if m, err := Scan(&n); m != 1 { 
     panic(err) 
    } 
    fmt.Println(`Enter the integers`) 
    all := make([]int, n) 
    ReadN(all, 0, n) 
    fmt.Println(all) 
} 

func ReadN(all []int, i, n int) { 
    if n == 0 { 
     return 
    } 
    if m, err := Scan(&all[i]); m != 1 { 
     panic(err) 
    } 
    ReadN(all, i+1, n-1) 
} 

func Scan(a *int) (int, error) { 
    return fmt.Scan(a) 
} 

IO:

Enter the number of integers 
3 
Enter the integers 
10 20 30 
[10 20 30] 

爲了更快地掃描輸入改寫:

func Scan(a *int) (int, error) { 
    return fmt.Scan(a) 
} 

使用:使用循環,而不需要使用遞歸函數
Faster input scanning

0

簡單的解決辦法:

var n int 

    if _, err := fmt.Scan(&n); err != nil { 
     panic(err) 
    } 

    arr := make([]int, n) 

    for i := 0;i<n;i++{ 

     if _, err := fmt.Scan(&arr[i]); err != nil { 
      panic(err) 
     } 
    } 

    fmt.Println(arr) 
相關問題