map[int]interface{} не получается передать в функцию как map[constraints.Ordered]interface{}
Есть код:
package main
import (
"golang.org/x/exp/constraints"
)
func Keys[keyType constraints.Ordered](mp map[keyType]interface{}) []keyType {
s := make([]keyType, len(mp))
i := 0
for key, _ := range mp {
s[i] = key
i++
}
return s
}
func main() {
s := map[int]int{1: 1, 2: 2}
Keys(s)
}
При запуске ошибка :
.\main.go:20:7: type map[int]int of s does not match inferred type map[int]interface{} for map[keyType]interface{}
Я не понимаю в чем.
Согласно документации int подходит под constraints.Ordered, так что и map[int]int должен подходить под map[int]interface{}
Ответы (1 шт):
Автор решения: Senior Pomidor
→ Ссылка
Ошибка возникает из-за того, что тип s, который является map[int]int не соответствует типу map[keyType]interface{}, которая ждет функция Keys.
Чтобы исправить ошибку, вам нужно изменить s на map[int]interface{} или объявить функцию Keys с конкретным типом для keyType.
s := map[int]interface{}{1: 2, 3: 4}
Keys(s)
или так
func Keys(mp map[int]interface{}) []int {
s := make([]int, len(mp))
i := 0
for key, _ := range mp {
s[i] = key
i++
}
return s
}
func main() {
s := map[int]interface{}{1: 1, 2: 2}
Keys(s)
}