«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я не могу присвоить []байт строке в Go?

Почему я не могу присвоить []байт строке в Go?

Опубликовано 8 ноября 2024 г.
Просматривать:674

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

Ошибка назначения байтов: невозможно присвоить []байт строке

При попытке прочитать файлы в папке вы столкнулись с ошибкой «невозможно присвоить []байт z (строка типа) при множественном присвоении» при попытке прочитать содержимое файла. Давайте углубимся в причину этой ошибки.

Понимание множественного присвоения

Когда нескольким переменным присваиваются значения в одной строке, как в вашем коде:

z, err := ioutil.ReadFile(z)

Каждая переменная в левой части оператора присваивания получает соответствующее значение, возвращаемое функцией. В этом случае функция ioutil.ReadFile возвращает два значения: []байт (двоичные данные) и ошибку.

Присвоение байтов строкам

Проблемная часть — попытка чтобы присвоить []байт (двоичные данные), возвращенный из ioutil.ReadFile, переменной z, которая объявлена ​​как строка. Именно здесь возникает ошибка, поскольку z ожидает строковое значение, а не двоичные данные.

Решение

Чтобы устранить эту ошибку, у вас есть два варианта:

  1. Преобразуйте []байт в строку с помощью функции string():
buf, err := ioutil.ReadFile(z)
if err != nil {
    log.Fatal(err)
}
z = string(buf)
  1. Объявите z как []байт вместо строки:
var z []byte
z, err := ioutil.ReadFile(z)

Работа с двоичными данными

Хотя преобразование двоичных данных в строки возможно, часто предпочтительнее работать напрямую с сами двоичные данные. Это позволяет избежать ненужного преобразования и сохранить исходный формат данных.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3