Lorsque vous travaillez avec des fichiers, il est souvent nécessaire de lire des lignes spécifiques. Dans Go, il existe différentes approches pour y parvenir, mais l'une des plus simples et efficaces consiste à utiliser le type bufio.Scanner.
La fonction ReadLine fournie dans la question utilise bufio.Scanner pour parcourir les lignes de un fichier. Cependant, certaines optimisations peuvent être apportées pour une efficacité améliorée.
La fonction modifiée ci-dessous exploite le fait que bufio.Scanner renvoie à la fois la ligne sous forme de chaîne et une erreur :
<code class="go">func ReadLine(r io.Reader, lineNum int) (line string, lastLine int, err error) { sc := bufio.NewScanner(r) for sc.Scan() { lastLine++ if lastLine == lineNum { return sc.Text(), lastLine, sc.Err() } } return line, lastLine, io.EOF }</code>
Cette optimisation élimine le besoin d'un appel supplémentaire à sc.Err() lors du renvoi du résultat, améliorant légèrement les performances.
La fonction ReadLine originale fournit un moyen simple et efficace de lire des lignes spécifiques d'un fichier dans Go. Avec l'optimisation décrite ci-dessus, il offre une efficacité améliorée en réduisant les appels de fonctions inutiles et les allocations de mémoire.
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!