在地图golang中设置值,键入错误,不确定如何修复

在地图golang中设置值,键入错误,不确定如何修复,go,Go,我试图在golang中将一个key:value对设置为本地缓存 设置新对时,由于条目值的结构,我收到一个错误 type Cache struct { cache map[string]*entry } type entry struct { value string err error } func NewCache() *Cache { return &Cache{cache: make(map[string]*entry)} } func (

我试图在golang中将一个key:value对设置为本地缓存

设置新对时,由于条目值的结构,我收到一个错误

type Cache struct {
    cache map[string]*entry
}

type entry struct {
    value string
    err   error
}

func NewCache() *Cache {
    return &Cache{cache: make(map[string]*entry)}
}

func (c *Cache) Set(key string, value *entry) (string, string) {
    c.cache[key] = value

    return key, value

}
我可以看出,值对需要错误和值类型输出,但我不知道如何在使用该错误值时设置值,如果这样做有意义的话

更新包括get函数, 我错过了什么?感谢你的指点

我的目的是能够将值字符串从条目传递到映射中


我刚刚开始重新编写一个更简单的版本,但是如果我能让Set功能正常工作,我认为这种格式是有意义的:S

缓存上的
Set
方法声明了
(string,string)
的返回值,但是您返回
键,值
,其中第一个是字符串,但是第二种类型是
*条目
,而不是
字符串
。要解决此问题,请将
字符串
作为第二个返回值返回,或者将第二个声明的返回类型更改为
*条目

给定变量名
value
(type
*entry
)和
entry
类型上的
value
(type
string
)字段,不清楚此处所需的行为。但是,由于
entry
是一个私有类型,我猜您实际上不需要将
*entry
类型的值传递给public
Set
方法

也许这就是你想要的:

func(c*Cache)集(键字符串、值字符串、错误)(字符串、字符串){
c、 cache[key]=&条目{值,err}
返回键、值
}
但也许你的意思是:

func(c*Cache)集(键字符串,ent*entry)(字符串,*entry){
c、 缓存[键]=ent
返回键
}

尽管在这两种情况下,返回值似乎都是不必要的,因为它们与给定的值相同。你可以考虑制作<代码> SET>代码>一个无效方法。

你是否打算将<代码> *条目< /代码>传递到<代码> SET>代码>函数?让我扩展代码,这个错误是get函数的MORESO,我将包含它。从CACH.SET返回一个编译错误。目前还不清楚返回值的意图是什么,因此很难提出修复方案。否则代码会编译。Set怎么会失败呢?@LeCoda你猜呢?你似乎真的没有问题。如果您愿意,请告诉我们,我们很乐意提供帮助。谢谢您。我现在正在尝试实现这一点,仍然会遇到一些类型错误,如果是这样的话,我将测试并询问更多问题okay@LeCoda是的,让我知道进展如何
func (c *Cache) Get(key string) (string, error) {
    res, ok := c.cache[key]
    if !ok {
        res = &entry{}
        // res.value, res.err = f()
        c.cache[key] = res
    }
    return res.value, res.err