具有映射的接收方类型无效

我正在尝试在基本地图上定义其他方法 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)

在重构之前,该方法类似,但使用 a 而不是 :funcTyp


type typeRegistry map[string]func()


func (r typeRegistry) Add(name string, factory func()) {

    r[name] = factory

}

这个版本有效。在映射类型接收器上定义其他方法有何不同?


GCT1015
浏览 89回答 1
1回答

素胚勾勒不出你

type typeRegistry = map[string]Typ是类型别名。你不能在别名上定义方法(只在原始类型上定义方法,但在这种情况下,它不能有方法,所以你运气不好)。map[string]Typ您可能想要的是创建自定义类型,而不是别名:type typeRegistry map[string]Typ然后你的方法会起作用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go