登录
首页 >  Golang >  Go问答

地图接收器类型无效

来源:stackoverflow

时间:2024-04-08 19:36:37 237浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《地图接收器类型无效》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我正在尝试在基本地图上定义其他方法 https://play.golang.org/p/3bkgxvjijp1:

type typ struct {
    config string
}

type typeregistry = map[string]typ

func (r typeregistry) add(name string) {
    typ := typ{
        config: "config",
    }

    r[name] = typ
}

这样做会失败:

invalid receiver type map[string]typ (map[string]typ is not a defined type)

重构之前,方法类似,但使用 func 而不是 typ

type typeRegistry map[string]func()

func (r typeRegistry) Add(name string, factory func()) {
    r[name] = factory
}

这个版本有效。在map类型接收器上定义附加方法有什么区别?


解决方案


type typeregistry = map[string]typ

type alias。您不能在别名上定义方法(只能在原始类型上定义方法 - 但在本例中 map[string]typ 上不能有方法,所以您运气不好)。

您可能想要的是创建自定义类型,而不是别名:

type typeRegistry map[string]Typ

那么你的方法就会起作用。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《地图接收器类型无效》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>