Maison >développement back-end >Golang >Les paramètres variadiques de Golang peuvent-ils être utilisés pour des opérations simultanées ?

Les paramètres variadiques de Golang peuvent-ils être utilisés pour des opérations simultanées ?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBoriginal
2024-04-30 09:12:011197parcourir

Les paramètres variadiques du langage Go permettent aux fonctions d'accepter un nombre variable de paramètres pour gérer n'importe quel nombre d'entrées. Ils peuvent également être utilisés pour des opérations simultanées, telles que l'exécution simultanée d'un ensemble de fonctions, chacune recevant un nombre variable d'arguments entiers. Une utilisation variadique simultanée peut être obtenue en utilisant un WaitGroup pour attendre la fin de toutes les goroutines.

Les paramètres variadiques de Golang peuvent-ils être utilisés pour des opérations simultanées ?

Utilisation simultanée de paramètres variadiques dans le langage Go

Dans le langage Go, les paramètres variadiques sont un paramètre de fonction spécial qui permet à une fonction d'accepter un nombre variable de paramètres. En règle générale, les arguments variadiques sont utilisés lorsqu'une fonction doit gérer un nombre arbitraire d'entrées.

La syntaxe ... est utilisée pour déclarer les paramètres variables. Par exemple, la fonction suivante accepte un paramètre de chaîne fixe et un nombre quelconque de paramètres entiers : ... 语法用于声明可变参数。例如,以下函数接受一个固定的字符串参数和任意数量的整数参数:

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()
}

在这个例子中,wgsync.WaitGroup)用于等待所有 goroutine 完成。

实战案例

以下是一个使用可变参数进行并发操作的实战案例:

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...)
}

在这个例子中,parallelrrreee

🎜Utilisation simultanée de paramètres variadiques🎜🎜🎜Les paramètres variables peuvent également être utilisés dans des opérations simultanées. Par exemple, la fonction suivante exécute simultanément un ensemble de fonctions, dont chacune reçoit un nombre variable d'arguments entiers : 🎜rrreee🎜Dans cet exemple, wg(sync.WaitGroup code>) est utilisé pour attendre que toutes les goroutines soient terminées. 🎜🎜🎜Cas pratique🎜🎜🎜Ce qui suit est un cas pratique d'utilisation de paramètres variables pour des opérations simultanées : 🎜rrreee🎜Dans cet exemple, la fonction parallèle exécute trois tâches simultanément, chaque tâche calcule toutes deux la somme d'un ensemble d'entiers différents. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn