ホームページ >バックエンド開発 >Golang >Go で複数の数値を効率的にスキャンしてスライスに入れる方法は?

Go で複数の数値を効率的にスキャンしてスライスに入れる方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-17 09:37:25927ブラウズ

How to Efficiently Scan Multiple Numbers into a Slice in Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。