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

Константа reflect.Ptr

Константа reflect.Ptr представляет собой значение типа reflect.Kind, используемое для обозначения указателей в системе типов Go. Она является одной из констант, определяющих конкретный вид типа данных при работе с рефлексией. В первом параметре функция reflect.TypeOf возвращает тип, у которого можно получить Kind, и если этот Kind равен reflect.Ptr, значит, мы имеем дело с указателем.

Синтаксис

const Ptr = 22

Константа используется для сравнения с результатом метода Kind у значения reflect.Type или reflect.Value.

Пример

Давайте проверим, является ли тип переменной указателем:

package main import ( "fmt" "reflect" ) func main() { var num int = 42 var ptr *int = &num t := reflect.TypeOf(ptr) if t.Kind() == reflect.Ptr { fmt.Println("Type is a pointer") } }

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

"Type is a pointer"

Пример

Проверим тип для не-указателя, чтобы увидеть, что условие не срабатывает:

package main import ( "fmt" "reflect" ) func main() { var str string = "hello" t := reflect.TypeOf(str) if t.Kind() == reflect.Ptr { fmt.Println("Type is a pointer") } else { fmt.Println("Type is not a pointer") } }

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

"Type is not a pointer"

Пример

Использование reflect.Ptr для получения базового типа указателя:

package main import ( "fmt" "reflect" ) func main() { var num int = 42 var ptr *int = &num t := reflect.TypeOf(ptr) if t.Kind() == reflect.Ptr { elemType := t.Elem() fmt.Printf("Pointer to: %s\n", elemType.Kind()) } }

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

"Pointer to: int"

Пример

Проверка значения через reflect.Value:

package main import ( "fmt" "reflect" ) func main() { var num int = 42 var ptr *int = &num v := reflect.ValueOf(ptr) if v.Kind() == reflect.Ptr { fmt.Println("Value is a pointer") fmt.Printf("Pointed value: %v\n", v.Elem().Interface()) } }

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

"Value is a pointer" "Pointed value: 42"

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

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