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

Метод reflect.Value.IsValid

Метод IsValid структуры reflect.Value проверяет, представляет ли значение отражения действительный объект. Он возвращает true, если значение отражения соответствует реальному объекту в памяти, и false в противном случае. Метод не принимает никаких параметров и возвращает логическое значение.

Синтаксис

reflect.Value.IsValid()

Пример

Давайте проверим валидность значения, полученного с помощью reflect.ValueOf:

package main import ( "fmt" "reflect" ) func main() { var x int = 42 v := reflect.ValueOf(x) res := v.IsValid() fmt.Println(res) }

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

true

Пример

Давайте проверим валидность нулевого значения reflect.Value:

package main import ( "fmt" "reflect" ) func main() { var v reflect.Value res := v.IsValid() fmt.Println(res) }

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

false

Пример

Давайте проверим валидность значения для несуществующего поля структуры:

package main import ( "fmt" "reflect" ) type User struct { Name string } func main() { u := User{Name: "John"} v := reflect.ValueOf(u) field := v.FieldByName("Age") res := field.IsValid() fmt.Println(res) }

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

false

Пример

Давайте используем IsValid для безопасного доступа к элементам карты:

package main import ( "fmt" "reflect" ) func main() { m := map[string]int{"a": 1, "b": 2} v := reflect.ValueOf(m) key := reflect.ValueOf("c") value := v.MapIndex(key) if value.IsValid() { fmt.Println("Key exists:", value.Interface()) } else { fmt.Println("Key does not exist") } }

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

"Key does not exist"

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

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