学无止尽

你的博客名称

你的一句话介绍

【Golang】无法在多个赋值中将 interface{} 赋给xxx (类型 string)

在把map里的string赋值给其他结构变量的时候报错了,
中文报错:无法在多个赋值中将 interface{} 赋给 xxx (类型 string)
英文报错:Cannot assign interface{} to xxx (type string) in multiple assignment

错误的原因是因为map

type Set struct {
	Set map[string]interface{} `yaml:"setting""`
}

返回的是interface类型,需要做转换才能使用,golang提供了类型断言来实现这类转换:

t := i.(T)
这个表达式意思是接口i是T类型,并将它的值赋值给t。
如果i不是类型T,则这样写会引起panic。
 
为了防止panic,可能写成下面这样:
 
t, ok := i.(T)
如果接口i的类型是T,则ok则为true,否则为false。
posted @ 2021-06-06 01:46  5055555  阅读(3121)  评论(0)    收藏  举报