Maison >développement back-end >Golang >Passez aux pipelines avec les interfaces Raku
Alors, disons que vous êtes un développeur Golang et que vous voulez que Go pur écrive une tâche CICD :
tâche de chat.go
package main import "fmt" func main() { fmt.Println("Hello, pipeline") }
Go, c'est cool, mais il y a une chose qui le rend difficile à utiliser dans des scénarios de haut niveau : sa verbosité. Passer des paramètres pour exécuter des tâches et les renvoyer au scénario principal demande quelques efforts et beaucoup de code passe-partout. Ce serait bien de garder le code principal concis et facile à lire.
Le Rakulang, en revanche, est un langage parfait lorsqu'il s'agit d'entrer et de sortir des données, en raison de son extrême flexibilité et de son expressivité.
Dans cet article, je vais montrer comment intégrer des tâches Golang dans des pipelines CICD, avec un peu d'aide du framework Sparrow.
Tout d'abord, modifions notre code de tâche golang, la nouvelle version sera :
tâche de chat.go
package main import ( "fmt" "github.com/melezhik/sparrowgo" ) func main() { type Params struct { Message string } type Result struct { Message string } var params Params // sparrowgo takes care about passing // input parameters from Raku to Go sparrowgo.Config(¶ms) // read params from pipeline fmt.Printf("Task params: %s\n", params.Message) // return results back to pipeline sparrowgo.UpdateState(&Results{Message : "Hello from Go"}) }
Tout ce que nous avons fait ici, c'est utiliser le package Sparrowgo qui "convertit" la tâche Golang en tâche Sparrow avec l'avantage de transmettre et de renvoyer des données depuis et vers Rakulang.
Enfin, voici à quoi ressemblera notre pipeline, maintenant c'est la partie Raku :
#!raku my $s = task-run ".", %( :message<Hello from Raku> ); say "Result: ", $s<Message>;
Conception de haut niveau.
Maintenant, une fois que nous avons mis en place un code de validation de principe, nous pouvons avoir une idée générale de ce à quoi pourrait ressembler notre système de pipeline :
[ Raku scenario to pass and handle data in and out ] \ \ \ task.go -> result -> task.go -> result -> task.go -> ...
Nous avons donc le meilleur des deux mondes : Raku pour écrire des scénarios avec moins de code et Golang pour faire tout le travail fastidieux là où des performances et une vérification de type stricte sont requises.
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!