Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpRfKd 144 of 280 menu
◀ ▶

Тип и вид значения в Go

Тип называет конкретное имя, а вид говорит, структура это, срез или число. У одной структуры имя может быть main.User, а вид останется структурой, как у любого другого типа с полями.

Имя типа и вид берут из одного описания значения: сначала получают тип по переменной, затем у типа читают строковое имя и отдельно запрашивают вид. Два ответа не подменяют друг друга.

Создадим пользователя и выведем имя типа и его вид:

package main import ( "fmt" "reflect" ) type User struct { Name string } func main() { u := User{Name: "ann"} t := reflect.TypeOf(u) fmt.Println(t.String()) fmt.Println(t.Kind()) }

На экране строка с полным именем типа и слово, обозначающее структуру. Вид не повторяет имя пакета: он относится к форме данных, а не к вашему объявлению.

Сравним вид у целого числа и у среза строк:

package main import ( "fmt" "reflect" ) func main() { n := 10 items := []string{"a", "b"} fmt.Println(reflect.TypeOf(n).Kind()) fmt.Println(reflect.TypeOf(items).Kind()) }

Дана структура:

type Point struct { X int Y int } p := Point{X: 1, Y: 2}

Выведите имя типа p и скажите, какой вид вернется у этого типа.

Дано значение:

n := 0

Узнайте вид n и выведите его.

Дан следующий срез:

labels := []string{"go", "rust"}

Сравните вид labels с видом у структуры с полями. Скажите, совпадут ли ответы.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить