La programmation fonctionnelle utilise des tuyaux et des goroutines pour gérer les entrées et les sorties. Lors du traitement des entrées, utilisez des tuyaux et des goroutines pour traiter les données en streaming en parallèle. Lors du traitement de la sortie, utilisez des canaux pour transmettre les données d'une fonction à une autre. Dans le cas réel, les pipelines sont utilisés pour connecter la fonction de traitement et la fonction de sortie afin de réaliser le traitement des entrées et le formatage des sorties. Cette approche offre des avantages en matière d’évolutivité, de concurrence et de testabilité.
Gestion des entrées et des sorties dans la programmation fonctionnelle Go
La programmation fonctionnelle se concentre sur l'utilisation de structures de données immuables et de fonctions pures pour écrire de la logique. Cette approche présente des avantages uniques lors de la gestion des entrées et des sorties.
Traitement des entrées
Pour traiter les entrées, nous pouvons utiliser des tuyaux et des goroutines pour traiter les données en streaming en parallèle. Par exemple, nous pouvons diffuser des lignes de texte lues à partir d'une entrée standard dans un tube en utilisant le code suivant :
package main import ( "bufio" "fmt" "log" "os" ) func main() { lines := make(chan string) go func() { s := bufio.NewScanner(os.Stdin) for s.Scan() { lines <- s.Text() } close(lines) }() for line := range lines { fmt.Println(line) } }
Processing Output
Pour la sortie, nous pouvons utiliser des tubes pour transmettre des données d'une fonction à une autre. Par exemple, nous pouvons utiliser le code suivant pour diffuser certaines chaînes vers la sortie standard :
package main import ( "fmt" "log" ) func main() { lines := []string{"line1", "line2", "line3"} ch := make(chan string) go func() { for _, line := range lines { ch <- line } close(ch) }() for line := range ch { fmt.Println(line) } }
Exemple pratique
Considérons l'exemple pratique suivant : Nous avons une liste qui contient des données. Nous souhaitons traiter les données de cette liste et les afficher dans un autre format.
En utilisant la programmation fonctionnelle, nous pouvons diviser cette tâche en deux fonctions :
Nous pouvons connecter la fonction de traitement et la fonction de sortie à l'aide de tuyaux comme indiqué ci-dessous :
package main import ( "fmt" "log" ) func main() { lines := []string{"line1", "line2", "line3"} process := func(in <-chan string) <-chan string { out := make(chan string) go func() { for line := range in { out <- line + "-processed" } close(out) }() return out } output := func(in <-chan string) { for line := range in { fmt.Println(line) } } processed := process(lines) output(processed) }
Cette approche offre les avantages suivants :
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!