Heim >Backend-Entwicklung >Golang >Warum kann ich einem String in Go kein []Byte zuweisen?
Verstehen des Byte-Zuweisungsfehlers: []Byte kann nicht zu String zugewiesen werden
Bei Ihrem Versuch, Dateien in einem Ordner zu lesen, ist der Fehler aufgetreten „[]Byte kann nicht in Mehrfachzuweisung an z (Typzeichenfolge) zugewiesen werden“, wenn versucht wird, den Inhalt einer Datei zu lesen. Lassen Sie uns den Grund für diesen Fehler genauer untersuchen.
Mehrfachzuweisung verstehen
Wenn mehreren Variablen Werte in einer einzigen Zeile zugewiesen werden, wie in Ihrem Code:
<code class="go">z, err := ioutil.ReadFile(z)</code>
Jede Variable auf der linken Seite des Zuweisungsoperators erhält einen entsprechenden Wert, der von der Funktion zurückgegeben wird. In diesem Fall gibt die Funktion ioutil.ReadFile zwei Werte zurück: []Byte (Binärdaten) und Fehler.
Bytes zu Strings zuweisen
Der problematische Teil ist der Versuch um das von ioutil.ReadFile zurückgegebene []Byte (Binärdaten) der z-Variablen zuzuweisen, die als Zeichenfolge deklariert ist. Hier tritt der Fehler auf, weil z einen String-Wert und keine Binärdaten erwartet.
Lösung
Um diesen Fehler zu beheben, haben Sie zwei Möglichkeiten:
<code class="go">buf, err := ioutil.ReadFile(z) if err != nil { log.Fatal(err) } z = string(buf)</code>
<code class="go">var z []byte z, err := ioutil.ReadFile(z)</code>
Arbeiten mit Binärdaten
Während die Konvertierung von Binärdaten in Zeichenfolgen möglich ist, ist es oft vorzuziehen, direkt mit den Binärdaten selbst zu arbeiten. Dadurch werden unnötige Konvertierungen vermieden und das ursprüngliche Format der Daten bleibt erhalten.
Das obige ist der detaillierte Inhalt vonWarum kann ich einem String in Go kein []Byte zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!