Go で数値をスライスにスキャンする
Go で標準入力から複数の数値を読み取る場合、個々の変数に値を割り当てることができます。
numbers := make([]int, 2) fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])
ただし、プロセスを簡素化し、スライスに直接読み込むこともできます。 fmt パッケージはスライスへのスキャンをサポートしていませんが、次のユーティリティ関数が役立ちます:
func packAddrs(n []int) []interface{} { p := make([]interface{}, len(n)) for i := range n { p[i] = &n[i] } return p }
この関数は、入力スライス内の各要素のアドレスのスライスを作成します。この関数を使用すると、次のようにスライスをスキャンできます:
numbers := make([]int, 2) n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...) fmt.Println(numbers, n, err)
fmt.Sscan() でこれをテスト:
numbers := make([]int, 5) n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...) fmt.Println(numbers, n, err)
出力:
[1 3 5 7 9] 5 <nil>
以上がGo で複数の数値を効率的にスキャンしてスライスに入れる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。