Я пытался реализовать функцию, которая может случайным образом выбрать элемент из любого типа среза (например, функции random.choice питона) пытается использовать интерфейс {} срезу, чтобы выбрать случайный элемент
func RandomChoice(a []interface{}, r *rand.Rand) interface{} {
i := r.Int()%len(a)
return a[i]
}
Однако при попытке передать в ломтике типа [] float32 в первый аргумент этой ошибка возникает:
cannot use my_array (type []float32) as type []interface {} in function argument
является ли это fundemental злоупотребления интерфейса {}? есть ли лучший способ сделать это?
Спасибо за ваш ответ на часть моего вопроса. Мне также нравится цитата из Стивена по ссылке из моего ответа: «В Go существует общее правило, что синтаксис не должен скрывать сложные/дорогостоящие операции». – kellpossible