Используйте refle.ArrayOf , чтобы создать тип массива с учетом типа элемента среза.Используйте refle.New , чтобы создать значение этого типа.Используйте refle.Copy для копирования из среза в массив.
func SliceToArray(in interface{}) interface{} {
s := reflect.ValueOf(in)
if s.Kind() != reflect.Slice {
panic("not a slice")
}
t := reflect.ArrayOf(s.Len(), s.Type().Elem())
a := reflect.New(t).Elem()
reflect.Copy(a, s)
return a.Interface()
}
Запустите его на игровой площадке
Эта функция полезна длясоздание ключа карты из среза и других сценариев, где требуется сопоставимое значение.В противном случае обычно лучше использовать срез, когда длина может быть произвольной.