gpt4 book ai didi

struct - 如何解决 "type interface has no field or method"错误?

转载 作者:IT王子 更新时间:2023-10-29 00:44:15 28 4
gpt4 key购买 nike

我想为 mgo API 写一个抽象:

package manager

import "labix.org/v2/mgo"

type Manager struct {
collection *mgo.Collection
}

func (m *Manager) Update(model interface{}) error {
return m.collection.UpdateId(model.Id, model)
}

编译时我得到“model.Id undefined (interface{} has no field or method Id)”这本身是显而易见的。

这对我来说是完全错误的方法还是有一个简单的解决方法如何让编译器“相信”传递的结构在运行时会有一个 Id 属性。

最佳答案

您可以定义一个声明 Id 函数的接口(interface)

type Ider interface {
Id() interface{}
}

如果您的模型是 Ider,那么您的函数将起作用。

func (m *Manager) Update(model Ider) error {

考虑到 mgo#Collection.UpdateId() function采用 interface{},它将接受一个 Ider

关于struct - 如何解决 "type interface has no field or method"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24583607/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com