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

Posted 5055555

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。

以上是关于Golang无法在多个赋值中将 interface{} 赋给xxx (类型 string)的主要内容,如果未能解决你的问题,请参考以下文章

Go语言之interface

golang - interface的作用

golang interface 与 反射

在Golang中将结构指针转换为接口指针

golang-利用反射给结构体赋值

golang 可以监听多个端口吗