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

Функция reflect.FuncOf

Функция reflect.FuncOf создает новый тип функции во время выполнения программы. В первый параметр передается слайс типов аргументов, во второй - слайс типов результатов, третий параметр указывает, должна ли функция принимать переменное количество аргументов. Функция возвращает значение типа reflect.Type, представляющее созданный тип функции.

Синтаксис

reflect.FuncOf(in []reflect.Type, out []reflect.Type, variadic bool) reflect.Type

Пример

Давайте создадим тип функции, принимающей два целых числа и возвращающей их сумму:

package main import ( "fmt" "reflect" ) func main() { intType := reflect.TypeOf(0) funcType := reflect.FuncOf( []reflect.Type{intType, intType}, []reflect.Type{intType}, false, ) fmt.Println(funcType) }

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

"func(int, int) int"

Пример

Давайте создадим тип функции, принимающей строку и возвращающей ее длину и саму строку:

package main import ( "fmt" "reflect" ) func main() { stringType := reflect.TypeOf("") intType := reflect.TypeOf(0) funcType := reflect.FuncOf( []reflect.Type{stringType}, []reflect.Type{intType, stringType}, false, ) fmt.Println(funcType) }

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

"func(string) (int, string)"

Пример

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

package main import ( "fmt" "reflect" ) func main() { intType := reflect.TypeOf(0) funcType := reflect.FuncOf( []reflect.Type{intType}, []reflect.Type{intType}, true, ) fmt.Println(funcType) }

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

"func(int, ...int) int"

Пример

Давайте создадим функцию без аргументов, возвращающую строку:

package main import ( "fmt" "reflect" ) func main() { stringType := reflect.TypeOf("") funcType := reflect.FuncOf( []reflect.Type{}, []reflect.Type{stringType}, false, ) fmt.Println(funcType) }

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

"func() string"

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

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