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

Функция reflect.ValueOf

Функция reflect.ValueOf принимает в качестве параметра любое значение и возвращает структуру reflect.Value, которая представляет собой отраженное значение переданной переменной. С помощью возвращенного объекта можно получать информацию о типе, значении и изменять значение переменной (если оно адресуемое). Функция является основным входным пунктом в механизм рефлексии языка Go.

Синтаксис

func ValueOf(i any) Value

Пример

Получение значения из переменной и ее типа:

package main import ( "fmt" "reflect" ) func main() { num := 42 val := reflect.ValueOf(num) fmt.Println(val) fmt.Println(val.Type()) fmt.Println(val.Kind()) }

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

42 int int

Пример

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

package main import ( "fmt" "reflect" ) func main() { str := "abcde" val := reflect.ValueOf(str) fmt.Println(val) fmt.Println(val.Type()) fmt.Println(val.Kind()) }

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

abcde string string

Пример

Получение отраженного значения для слайса:

package main import ( "fmt" "reflect" ) func main() { slice := []int{1, 2, 3, 4, 5} val := reflect.ValueOf(slice) fmt.Println(val) fmt.Println(val.Type()) fmt.Println(val.Kind()) fmt.Println(val.Len()) }

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

[1 2 3 4 5] []int slice 5

Пример

Работа с указателем и получение адресуемого значения:

package main import ( "fmt" "reflect" ) func main() { num := 10 ptr := &num val := reflect.ValueOf(ptr) fmt.Println(val.Type()) fmt.Println(val.Kind()) fmt.Println(val.IsNil()) if val.Elem().CanSet() { val.Elem().SetInt(20) fmt.Println(num) } }

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

*int ptr false 20

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

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