Golang 中從空格分隔的輸入中讀取整數:一種有效的方法
在編程中,從標準輸入並將它們有效地儲存在陣列中是一項常見任務。實現此目的的一種方法是使用簡單的 for 迴圈。然而,有一種技術可以利用遞歸來最小化程式碼,同時保持最佳效能。
在沒有明確循環的情況下使用遞歸
以下Go 程式碼片段示範如何閱讀不使用for 或goto 迴圈從標準輸入取得整數:
<code class="go">package main import "fmt" func main() { var n int fmt.Println(`Enter the number of integers`) if _, err := fmt.Scan(&n); err != nil { panic(err) } fmt.Println(`Enter the integers`) all := make([]int, n) ReadN(all, 0, n) fmt.Println(all) } // Recursively reads n integers into all starting from position i. func ReadN(all []int, i, n int) { if n == 0 { return } if _, err := fmt.Scan(&all[i]); err != nil { panic(err) } ReadN(all, i+1, n-1) }</code>
範例輸出
假設標準輸入包含整數:
Enter the number of integers 3 Enter the integers 23 45 66
執行程式將輸出:
[23 45 66]
<code class="go">type reader struct { val int } func (r *reader) Read(b []byte) (int, error) { w, err := fmt.Scanf("%d", &r.val) if err != nil { return w, err } b[0] = byte(r.val) return 1, err }</code>
以上是如何在 Golang 中從空格分隔的輸入中讀取整數:遞歸方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!