下面这个语句是让inter接口转换成Person类型
inter.(&Person)
有什么方法用一个变量存Person然后转换?
类似下面这样?
a := Person
inter.(&a)
下面这个语句是让inter接口转换成Person类型
inter.(&Person)
有什么方法用一个变量存Person然后转换?
类似下面这样?
a := Person
inter.(&a)
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.4k 阅读
2 回答2.2k 阅读
1 回答2.1k 阅读
1 回答1.5k 阅读
首先我们明确下问题: Inter接口和Person类型相互转换?
Inter接口转结构体和指针,&Person根本就不一个类型,我猜测是想转指针类型,接口转换成具体类型就要使用go的断言类型转换。
Inter接口转Person:
Inter接口转Person指针:
那么反过来转换Person结构体或*Person指针转Inter接口:
为什么转Inter接口直接赋值就好了?
因为你写的代码在编译时就会类型检测,检测是否实现了接口否在编辑器就报错了,实现了变量接口就直接隐式类型转换了。
可以参考我的另外一篇讲类型转换的文章:golang中的四种类型转换总结
我感觉主要问题是不熟悉断言,断言的格式是:
静态类型哪里就不能写变量只能是一个类型,新类型变量就转换类型后的变量,建议多看看断言example。