需要在Golang中使用Reflect构造接口/指针,而不是工作

时间:2016-07-01 15:05:28

标签: go

所以,这有效:

house := model.House {};
err = db.First(&house).Error;

但是,这不起作用:

var house model.House;

fetchFromDatabase := reflect.New(reflect.TypeOf(house)).Interface();
err = db.First(&fetchFromDatabase).Error;

... 数据库库提供错误:

  

不受支持的目的地,应该是切片或结构

对我来说,这应该是一个结构,考虑到" House" type是一个结构。但是,我仍然围着Reflect缠绕......有人可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

库正在抱怨,因为应用程序正在将*interface{}传递给该方法。值fetchFromDatabase是指向结构的指针。将此值直接传递给方法:

var house model.House
fetchFromDatabase := reflect.New(reflect.TypeOf(house)).Interface()
err = db.First(fetchFromDatabase).Error