Как передать тип в качестве аргумента на golang?

Пользователь

от janiya , в категории: Общие вопросы , 18 дней назад

Как передать тип в качестве аргумента на golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

1 ответ

Пользователь

от theron , 17 дней назад

@janiya 

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


Пример использования reflect для передачи типа в функцию:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main

import (
	"fmt"
	"reflect"
)

func getTypeName(value interface{}) string {
	t := reflect.TypeOf(value)
	return t.Name()
}

func main() {
	name := "John Doe"
	t := getTypeName(name)
	fmt.Println(t) // Output: string

	age := 30
	t = getTypeName(age)
	fmt.Println(t) // Output: int

	isValid := true
	t = getTypeName(isValid)
	fmt.Println(t) // Output: bool
}


В этом примере мы определяем функцию getTypeName, которая в качестве аргумента принимает значение любого типа (универсальный тип interface{}), используя reflect.TypeOf для получения его типа. Затем мы возвращаем имя типа с помощью t.Name(). В функции main мы передаем различные значения различных типов в getTypeName и выводим их имена типов.


Заметьте, что это статическое определение типов во время выполнения, и его использование должно быть ограничено. В большинстве случаев рекомендуется использовать конкретные типы аргументов без необходимости передачи типа в функцию.