Maison >développement back-end >Golang >Comment puis-je lire efficacement une ligne dans une chaîne avec Go ?

Comment puis-je lire efficacement une ligne dans une chaîne avec Go ?

DDD
DDDoriginal
2024-12-21 11:39:11681parcourir

How Can I Efficiently Read a Line into a String in Go?

Lire efficacement une ligne vers une chaîne dans Go

La bibliothèque standard Go fournit des fonctions de bas niveau pour lire les entrées, renvoyant des tableaux d'octets au lieu de cordes. Pour faciliter l'utilisation, nous explorons une approche alternative pour obtenir une chaîne directement à partir d'une fonction readline.

Fonction Readln personnalisée

Pour simplifier les opérations de lecture, nous créons une fonction personnalisée Fonction Readln qui lit une seule ligne (à l'exclusion du caractère de nouvelle ligne) à partir d'un bufio.Reader :

func Readln(r *bufio.Reader) (string, error) {
  var (
    isPrefix bool = true
    err error = nil
    line, ln []byte
  )
  for isPrefix && err == nil {
    line, isPrefix, err = r.ReadLine()
    ln = append(ln, line...)
  }
  return string(ln), err
}

Exemple d'utilisation

En utilisant la fonction Readln, nous pouvons lire les lignes d'un fichier et les imprimer sur la sortie standard :

f, err := os.Open(fi)
if err != nil {
    fmt.Println("error opening file= ", err)
    os.Exit(1)
}
r := bufio.NewReader(f)
s, e := Readln(r)
for e == nil {
    fmt.Println(s)
    s, e = Readln(r)
}

Cette approche évite d'avoir à convertir manuellement les tableaux d'octets en chaînes, rationalisant ainsi le processus d'obtention de chaînes à partir des fonctions readline en Go.

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