把电子表格解析为对象,传入文件路径,需要解析为的类型
返回值为 interface{},如何优雅地访问返回值的成员/方法
type Student struct {
Name string `xlsxCol:"student name"`
Age string `xlsxCol:"student age"`
Grade string `xlsxCol:"student grate"`
}
type Teacher struct {
Name string `xlsxCol:"teacher name"`
Age string `xlsxCol:"teacher age"`
}
func parse(path string, t reflect.Type) []interface{} {
... // 已经实现
}
在用的时候
result := parse("/tmp/xxx.xslx", reflect.TypeOf(Student{}))
if len(result) > 0 {
result[0].Name // 怎么可以访问到这个属性
}
如果是 debug 模式,在result[0].Name
这一行打断点,已经可以看到result[0]
是 {interface{} | Student}
的类型,且 debug 模式可以使用 Evaluate Expression result[0].Name
访问到 Name,但是静态编译肯定过不了。
想知道通常情况应该怎么处理这一问题,我应该在每个用的地方使用类型断言吗?
我实在不想写这种代码
func parseToStudent(path string) []Student {
...
}
func parseToTeacher(path string) []Teacher {
...
}
...
此处应该祭出这个图了