Кто в теме, объясните, пожалуйста,почему в golang нельзя []что-то привести к []interface{} :
func remove(slice []interface{}, s interface{}) []interface{} {
return append(slice[:s], slice[s+1:]...)
}
a := []string{"a", "b", "c"}
b := []int{1, 2, 3}
a = remove(a, 2)
b = remove(b, 1)
Вот -- более широкий пример. Если раскомментировать последние 2 строки в main(), то программа просто не соберётся. Вопрос: почему?? Ведь я могу передать переменную типа i1 в параметры типа intf, почему нельзя передать []i1 в параметр []intf? В смысле, почему не сделать, чтобы так было можно. Так бы было намного проще в том смысле, что вопрос с дженериками не стоял бы так остро.
package main
import (
"fmt"
"strconv"
)
type intf interface {
get() string
}
type i1 string
func (s i1) get() string {
return string(s)
}
type i2 int
func (s i2) get() string {
return strconv.Itoa(int(s))
}
func print1(a []intf) {
for _, i := range a {
fmt.Print(i, "; ")
}
}
func main() {
a := []intf{i1("xyz"), i2(42)}
print1(a)
//b := []i1{i1("xyz")}
//print1(b)
}