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

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

Barbara Streisand
リリース: 2024-12-17 09:37:25
オリジナル
922 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート