先看示例代码:
package main
import (
"flag"
"fmt"
"os"
)
type person struct {
name string
age int
}
func NewPerson() interface{} {
var man person
man.name = "xiaoming"
man.age = 18
return man
}
func main() {
per := NewPerson() // per的类型是interface{}
pers, ok := per.(person)
if ok {
fmt.Println(pers)
}
}
/* 输出:
{xiaoming 18}
*/
对于一个空接口类型的值,如果这个值是自定义类型,并且要使用这个值的一些成员方法或者访问某个成员变量,需要做一个断言,获得一个自定义类型的值,然后对这个值进行操作。
参考:
https://blog.csdn.net/m0_37965811/article/details/117855463
https://www.jianshu.com/p/148e5d231dc4