„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum kann ich einem String in Go kein []Byte zuweisen?

Warum kann ich einem String in Go kein []Byte zuweisen?

Veröffentlicht am 08.11.2024
Durchsuche:537

Why Can\'t I Assign []byte to a String in Go?

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. Sehen wir uns den Grund für diesen Fehler genauer an.

Mehrfachzuweisung verstehen

Wenn mehreren Variablen Werte in einer einzigen Zeile zugewiesen werden, wie in Ihrem Code:

z, err := ioutil.ReadFile(z)

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.

Zuweisen von Bytes zu Zeichenfolgen

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:

  1. Konvertieren Sie das []Byte mit der Funktion string() in einen String:
buf, err := ioutil.ReadFile(z)
if err != nil {
    log.Fatal(err)
}
z = string(buf)
  1. Deklarieren Sie z als []Byte statt als String:
var z []byte
z, err := ioutil.ReadFile(z)

Arbeiten mit Binärdaten

Während die Konvertierung von Binärdaten in Zeichenfolgen möglich ist, ist es oft vorzuziehen, direkt mit zu arbeiten Binärdaten selbst. Dies vermeidet unnötige Konvertierungen und bewahrt das ursprüngliche Format der Daten.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3