Wie lese ich mehrzeilige Antworten mit CR/LF-Trennzeichen in Go?

Susan Sarandon
Freigeben: 2024-10-28 16:48:02
Original
572 Leute haben es durchsucht

How to Read Multiline Responses with CR/LF Delimiter in Go?

Mehrzeilige Antworten mit CR/LF-Trennzeichen in Go lesen

Bei der Implementierung eines Beanstalkd-Clients in Go ist es notwendig, mehrzeilige Antworten zu lesen, die durch das New-Line-Zeichen getrennt sind (n) und das Wagenrücklaufzeichen (r). Die Standardfunktion bufio.ReadLine unterstützt nur das Trennen durch n.

Lesen bis CRLF

Um bis zum CRLF-Trennzeichen zu lesen, können Sie bufio.Scanner mit einer benutzerdefinierten SplitFunc-Funktion verwenden:

<code class="go">import (
    "bufio"
    "fmt"
    "io"

    "bytes"
)

func ScanCRLF(data []byte, atEOF bool) (advance int, token []byte, err error) {
    if atEOF && len(data) == 0 {
        return 0, nil, nil
    }
    if i := bytes.Index(data, []byte{'\r', '\n'}); i >= 0 {
        return i + 2, dropCR(data[0:i]), nil
    }
    if atEOF {
        return len(data), dropCR(data), nil
    }
    return 0, nil, nil
}</code>
Nach dem Login kopieren

In diesem Fall entfernt dropCR das abschließende „r“-Zeichen aus dem Token.

Sie können dann einen bufio.Scanner mit der ScanCRLF-Funktion verwenden, um die Daten zu lesen:

<code class="go">scanner := bufio.NewScanner(this.reader)
scanner.Split(ScanCRLF)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}</code>
Nach dem Login kopieren

Alternativ kann bufio.NewReaderSize verwendet werden, um eine bestimmte Länge zu lesen:

<code class="go">var nr_of_bytes int
nr_of_bytes, _ = strconv.Atoi(res)
buf := make([]byte, nr_of_bytes)
_, _ = io.ReadAtLeast(this.reader,buf, nr_of_bytes)</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie lese ich mehrzeilige Antworten mit CR/LF-Trennzeichen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!