Каким образом можно определить тип переменной или значения в Go?

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

от theron , в категории: Вопросы от знатоков , год назад

Каким образом можно определить тип переменной или значения в Go?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

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

от porter.kertzmann , год назад

@theron 

В Go можно использовать оператор типа typeof, чтобы определить тип переменной во время выполнения. Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
package main

import (
	"fmt"
	"reflect"
)

func main() {
	var x int = 5
	var y string = "hello"
	var z float64 = 3.14

	fmt.Println(reflect.TypeOf(x)) // выведет "int"
	fmt.Println(reflect.TypeOf(y)) // выведет "string"
	fmt.Println(reflect.TypeOf(z)) // выведет "float64"
}


Этот метод использует пакет reflect, который предоставляет средства для анализа типов во время выполнения программы.

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

от emery.sanford , год назад

@theron 

Помимо использования пакета reflect, в Go также можно использовать ключевое слово switch для определения типа значения во время выполнения. Пример:


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

import (
"fmt"
)

func main() {
  var x interface{} = 42
  switch x.(type) {
  case int:
	fmt.Println("x is of type int")
  case string:
	fmt.Println("x is of type string")
  case float64:
	fmt.Println("x is of type float64")
  default:
	fmt.Println("x is of unknown type")
}

}


В этом примере переменная x является пустым интерфейсом, который может хранить значения разных типов. Оператор switch с x.(type) проверяет, с каким типом значения x совпадает и выполняет соответствующий блок кода. Если тип неизвестен, используется блок default.