Метод reflect.Type.Len
Метод reflect.Type.Len используется для получения длины типа,
который представляет собой массив или канал. В первый и единственный
параметр метод принимает reflect.Type и возвращает целое число
int — количество элементов. Если тип не является массивом
или каналом, метод вызывает панику. Для слайсов длину нужно получать
через функцию reflect.Value.Len.
Синтаксис
type Len() int
Пример 1
Давайте получим длину типа массива из 5 элементов:
package main
import (
"fmt"
"reflect"
)
func main() {
var arr [5]int
t := reflect.TypeOf(arr)
res := t.Len()
fmt.Println(res)
}
Результат выполнения кода:
5
Пример 2
Получим длину типа канала с буфером на 10 элементов:
package main
import (
"fmt"
"reflect"
)
func main() {
var ch chan int = make(chan int, 10)
t := reflect.TypeOf(ch)
res := t.Len()
fmt.Println(res)
}
Результат выполнения кода:
10
Пример 3
Важно помнить, что для слайсов reflect.Type.Len не работает.
Попытка применить метод к слайсу приведет к панике:
package main
import (
"fmt"
"reflect"
)
func main() {
sl := []string{"a", "b", "c"}
t := reflect.TypeOf(sl)
res := t.Len()
fmt.Println(res)
}
Результат выполнения кода:
panic: reflect: call of reflect.Type.Len on slice Type
Смотрите также
-
метод
reflect.Type.Elem,
который возвращает тип элементов массива, канала, слайса или указателя -
метод
reflect.Value.Len,
который возвращает длину слайса, массива, карты, строки или канала -
функцию
reflect.ArrayOf,
которая создает новый тип массива заданной длины -
функцию
reflect.TypeOf,
которая возвращает тип переменной