ホームページ >バックエンド開発 >Golang >golang の可変引数パラメーターは同時操作に使用できますか?

golang の可変引数パラメーターは同時操作に使用できますか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2024-04-30 09:12:011204ブラウズ

Go 言語の可変パラメーターを使用すると、関数は可変数のパラメーターを受け入れ、任意の数の入力を処理するために使用できます。また、それぞれが可変数の整数引数を受け取る一連の関数の同時実行など、同時操作にも使用できます。可変個引数の同時使用は、WaitGroup を使用してすべてのゴルーチンが完了するのを待つことで実現できます。

golang の可変引数パラメーターは同時操作に使用できますか?

Go 言語での変数パラメーターの同時使用

Go 言語では、変数パラメーターは特別な関数パラメーターであり、可変数のパラメータを受け入れる関数。通常、可変個引数は、関数が任意の数の入力を処理する必要がある場合に使用されます。

... 構文は、可変引数パラメーターを宣言するために使用されます。たとえば、次の関数は固定文字列引数と任意の数の整数引数を受け入れます。

func concat(s string, nums ...int) string {
  var result string
  result += s
  for _, n := range nums {
    result += strconv.Itoa(n)
  }
  return result
}

同時実行での可変個引数の使用

可変個引数は同時実行でも使用できます。稼働中。たとえば、次の関数は一連の関数を同時に実行し、各関数は可変数の整数引数を受け取ります。

func parallel(tasks ...func(...int)) {
  var wg sync.WaitGroup
  for _, task := range tasks {
    wg.Add(1)
    go func() {
      defer wg.Done()
      task()
    }()
  }
  wg.Wait()
}

この例では、wg(sync.WaitGroup#) ##) は、すべてのゴルーチンが完了するのを待つために使用されます。

実際的なケース

次に、同時操作に変数パラメータを使用する実際的なケースを示します:

func main() {
  // 定义一个将整数相加的函数
  sum := func(nums ...int) int {
    var total int
    for _, n := range nums {
      total += n
    }
    return total
  }
  
  // 定义一组并发任务
  tasks := []func(...int){
    func(nums ...int) { fmt.Println("Task 1:", sum(nums...)) },
    func(nums ...int) { fmt.Println("Task 2:", sum(nums...)) },
    func(nums ...int) { fmt.Println("Task 3:", sum(nums...)) },
  }

  // 并发执行任务
  parallel(tasks...)
}

この例では、

Parallel この関数は 3 つのタスクを同時に実行し、各タスクは異なる整数セットの合計を計算します。

以上がgolang の可変引数パラメーターは同時操作に使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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