Maison  >  Article  >  développement back-end  >  Comment Golang fonctionne et Goroutine coopèrent

Comment Golang fonctionne et Goroutine coopèrent

王林
王林original
2024-04-26 08:18:01502parcourir

Comment Golang fonctionne et Goroutine coopèrent

Les fonctions du langage Go coopèrent avec Goroutine

Coroutine (Goroutine) est un mécanisme d'exécution parallèle léger dans le langage Go. Il peut collaborer avec des fonctions pour créer des programmes simultanés hautes performances et évolutifs.

Fonctions

Les fonctions du langage Go sont des collections de blocs de code qui effectuent des tâches spécifiques et renvoient des résultats. Les fonctions peuvent accepter des paramètres et les transmettre par valeur ou référence.

func add(a, b int) int {
    return a + b
}

Goroutine

Goroutine est un thread d'exécution léger géré par le runtime Go. Il est créé avec le mot-clé go comme suit : go 关键字创建,如下所示:

go func() {
    // Goroutine 正在执行的任务
}

协作

函数和 Goroutine 可以协作以创建并发程序。函数可以启动 Goroutine 来执行任务,而 Goroutine 可以在函数执行完成后回调函数。

实战案例

考虑以下代码示例,它启动一个 Goroutine 来计算斐波那契数列:

func main() {
    // 启动一个 Goroutine 来计算第 n 个斐波那契数
    n := 5
    fib := make(chan int)
    go func() {
        fib <- fib(n)
    }()

    // 在 main Goroutine 中接收计算结果
    result := <-fib
    fmt.Println("第", n, "个斐波那契数为:", result)
}

func fib(n int) int {
    if n <= 1 {
        return n
    }
    return fib(n-1) + fib(n-2)
}

在这种情况下,main() 函数启动了一个 Goroutine 来计算第 5 个斐波那契数。fib() 函数在 Goroutine 中执行,并将结果发送回 main() 函数的通道 fibmain()rrreee

Collaboration

🎜🎜 Les fonctions et les Goroutines peuvent collaborer pour créer des programmes simultanés. Les fonctions peuvent démarrer les Goroutines pour effectuer des tâches, et les Goroutines peuvent rappeler des fonctions une fois l'exécution de la fonction terminée. 🎜🎜🎜Cas pratique🎜🎜🎜Considérons l'exemple de code suivant, qui démarre une Goroutine pour calculer la séquence de Fibonacci : 🎜rrreee🎜Dans ce cas, la fonction main() démarre une Goroutine pour calculer la séquence de Fibonacci séquence : Calculez le 5ème nombre de Fibonacci. La fonction fib() est exécutée dans le Goroutine et renvoie le résultat au canal fib de la fonction main(). La fonction main() reçoit le résultat du canal et l'imprime. 🎜🎜Avec cette approche collaborative, nous pouvons profiter des capacités de concurrence de Goroutines tout en conservant l'ordre et la lisibilité du code. 🎜

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