func Log(args ...any) {}; names := []string{"a","b"}; Log(names...)?В Go []string и []any - разные типы, даже несмотря на то, что string удовлетворяет any. Развернуть []string через ... в параметр ...any нельзя:
func Log(args ...any) { fmt.Println(args...) }
names := []string{"alice", "bob"}
// Не компилируется:
// Log(names...) // cannot use names ([]string) as []any
// Решение 1: передать слайс как один аргумент
Log(names) // args = []any{[]string{"alice","bob"}}
// Решение 2: явная конвертация
anySlice := make([]any, len(names))
for i, v := range names {
anySlice[i] = v
}
Log(anySlice...) // args = []any{"alice", "bob"}
// Решение 3: передать поэлементно
Log("alice", "bob") // OK
Причина: Go не выполняет неявную конвертацию слайсов. []string и []any имеют разный layout в памяти (string - 16 байт, any/interface - 16 байт с другой структурой).