ホームページ >バックエンド開発 >Golang >Go の fmt.Fscan を使用して複数の数値を効率的にスキャンして配列に取り込むにはどうすればよいですか?

Go の fmt.Fscan を使用して複数の数値を効率的にスキャンして配列に取り込むにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-26 07:31:10742ブラウズ

How Can I Efficiently Scan Multiple Numbers into an Array Using Go's fmt.Fscan?

Go で fmt.Fscan を使用して数値を配列にスキャンする

プログラミングでよく遭遇するタスクの 1 つは、ユーザーからの複数の数値入力を読み取ることです。 。 Go 言語では、これは fmt.Fscan 関数と配列またはスライスを使用して入力値を保存することで実現できます。

次のコード スニペットを考えてみましょう。ここで、ユーザーは 2 つの数値を入力するように求められます。

numbers := make([]int, 2)
fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])

個々の配列要素 (numbers[0] とnumbers[1]) のメモリ アドレスを fmt.Fscan の引数として指定することで、効率的に読み取り、入力された数値を配列に保存します。

ただし、数値を配列自体に直接スキャンできる、より簡潔なアプローチが望まれます。これを実現するには、配列の要素へのポインターのスライスを作成するユーティリティ関数を作成します。

func packAddrs(n []int) []interface{} {
    p := make([]interface{}, len(n))
    for i := range n {
        p[i] = &n[i]
    }
    return p
}

packAddrs の結果を fmt.Fscan に渡すことで、入力数値を効果的にスキャンできます。配列:

numbers := make([]int, 2)
n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...)
fmt.Println(numbers, n, err)

このアプローチは、fmt.Fscan を使用して複数の数値を配列に読み取る、より簡単かつ効率的な方法を提供します。これは、入力値の数が事前にわからない場合に特に便利です。

以上がGo の fmt.Fscan を使用して複数の数値を効率的にスキャンして配列に取り込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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