Maison >développement back-end >Golang >Comment obtenir la fonctionnalité \'tail -f\' de Python dans Go : Goroutines vs tailReader ?
Go équivalent au générateur de type "tail -f" de Python
La fonctionnalité "tail -f" de Python permet une récupération pratique du dernier lignes d'un fichier au fur et à mesure de leur modification. Une implémentation Go d'une fonction similaire a été proposée et des inquiétudes ont été soulevées quant à son efficacité et à sa nature idiomatique.
Implémentation Go
L'implémentation Go fournie exploite un canal et une goroutine pour surveiller en permanence un fichier à la recherche de nouvelles lignes. Bien que cette approche soit fonctionnelle, elle soulève des inquiétudes quant à ses performances et à son respect des conventions de codage de Go.
Approche idiomatique de Go
Pour s'aligner sur les principes de conception de Go, une approche alternative est proposé en utilisant un wrapper autour d'un lecteur, à savoir tailReader. Ce wrapper introduit une méthode Read qui gère EOF avec une durée de sommeil spécifiée.
En créant une instance tailReader et en l'utilisant comme io.Reader, diverses fonctions et bibliothèques peuvent être utilisées pour traiter le fichier. Par exemple :
De plus, l'approche tailReader simplifie arrêt en fermant simplement le fichier.
Avantages
Par rapport à l'approche goroutine, tailReader présente plusieurs avantages :
Par conséquent, l'approche tailReader offre une solution plus propre et plus idiomatique pour implémenter la fonctionnalité "tail -f" dans Go, en adressant préoccupations concernant les performances et le respect des conventions de codage.
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!