GO每日一题(5)

91 阅读1分钟

下面这段代码有什么问题

func (m map[string]string) Set(key string, value string) {
	m[key] = value
}

func main() {
	m := make(map[string]string)
	m.Set("A", "One")
}

答案

编译失败

解释:Unnamed Type 不能作为方法的接收者。用 Named Type 来修复下代码

type MapType map[string]string

func (m MapType) Set(key string, value string) {
	m[key] = value
}

func main() {
	var m MapType = make(map[string]string)
	m.Set("A", "One")
	fmt.Println(m)
}

输出:map[A:One]