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

Функция reflect.Zero

Функция reflect.Zero принимает в качестве параметра тип reflect.Type и возвращает новое значение reflect.Value, представляющее нулевое значение для этого типа. Нулевое значение — это значение, которое присваивается переменной по умолчанию при ее объявлении без инициализации. Для разных типов данных нулевое значение имеет свои особенности: для чисел — это 0, для строк — пустая строка, для указателей — nil и так далее.

Синтаксис

reflect.Zero(typ)

Пример

Давайте создадим нулевое значение для типа int:

package main import ( "fmt" "reflect" ) func main() { var intType reflect.Type = reflect.TypeOf(0) val := reflect.Zero(intType) fmt.Printf("Type: %v, Value: %v, Kind: %v\n", val.Type(), val.Interface(), val.Kind()) }

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

"Type: int, Value: 0, Kind: int"

Пример

Давайте создадим нулевое значение для типа string:

package main import ( "fmt" "reflect" ) func main() { var strType reflect.Type = reflect.TypeOf("") val := reflect.Zero(strType) fmt.Printf("Type: %v, Value: %q, Kind: %v\n", val.Type(), val.Interface(), val.Kind()) }

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

"Type: string, Value: "", Kind: string"

Пример

Давайте создадим нулевое значение для слайса:

package main import ( "fmt" "reflect" ) func main() { sliceType := reflect.TypeOf([]int{}) val := reflect.Zero(sliceType) fmt.Printf("Type: %v, Value: %v, IsNil: %v\n", val.Type(), val.Interface(), val.IsNil()) }

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

"Type: []int, Value: [], IsNil: true"

Пример

Давайте создадим нулевое значение для указателя:

package main import ( "fmt" "reflect" ) func main() { ptrType := reflect.TypeOf(new(int)) val := reflect.Zero(ptrType) fmt.Printf("Type: %v, IsNil: %v, Value: %v\n", val.Type(), val.IsNil(), val.Interface()) }

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

"Type: *int, IsNil: true, Value: <nil>"

Пример

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

package main import ( "fmt" "reflect" ) type Person struct { Name string Age int } func main() { structType := reflect.TypeOf(Person{}) val := reflect.Zero(structType) fmt.Printf("Type: %v, Value: %+v\n", val.Type(), val.Interface()) }

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

"Type: main.Person, Value: {Name: Age:0}"

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

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