РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1528 of 1593 menu

Тип reflect.ValueError

Тип reflect.ValueError представляет ошибку, возникающую при выполнении некорректных операций с отражением в пакете reflect. Эта ошибка возвращается при попытке выполнить неподдерживаемую операцию над значением, например, вызвать метод SetInt на значении типа string. Структура содержит метод Error, который возвращает строковое описание ошибки.

Синтаксис

type ValueError struct { Method string Kind Kind }

Пример возникновения ошибки

Попробуем установить целочисленное значение для переменной строкового типа:

package main import ( "fmt" "reflect" ) func main() { var str string = "abcde" val := reflect.ValueOf(&str).Elem() val.SetInt(12345) }

Результат выполнения кода:

"panic: reflect: call of reflect.Value.SetInt on string Value"

Пример обработки ошибки

Используем метод CanSet и проверку типа перед установкой значения:

package main import ( "fmt" "reflect" ) func main() { var num int = 42 val := reflect.ValueOf(&num).Elem() if val.CanSet() && val.Kind() == reflect.Int { val.SetInt(100) fmt.Println("num =", num) } else { fmt.Println("Cannot set value") } }

Результат выполнения кода:

"num = 100"

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

Проверяем соответствие типа перед операцией с отражением:

package main import ( "fmt" "reflect" ) func main() { var data string = "abcde" val := reflect.ValueOf(data) if val.Kind() == reflect.String { fmt.Println("Value is string:", val.String()) } else { fmt.Println("Value is not string") } }

Результат выполнения кода:

"Value is string: abcde"

Смотрите также

  • тип reflect.Value,
    который представляет значение в системе отражения
  • тип reflect.Kind,
    который представляет тип значения в отражении
  • метод reflect.Value.CanSet,
    который проверяет возможность изменения значения
  • метод reflect.Value.Kind,
    который возвращает вид значения в отражении
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить