猿问

函数不适用于 if else 语句

我正在尝试使用Go作为教程构建一个基本的缓存系统。


由于某种原因,当我运行这个时,if else语句会导致错误。


package datasource


import (

    "fmt"

    "github.com/patrickmn/go-cache"

    "time"

)


type DataSource interface {

    Value(key string) (interface{}, error)


}


// DataSourceStr type, implements the DataSource interface

type DataSourceStr struct {

    data map[string]string

}



var cache = cache.New(5*time.Minute, 5*time.Minute)



func (n *DataSourceStr) Value(key string) (interface{}, error) {

        /* 

    1. Compute a cache key

    2. Search cache key

    3. If hit return value

    4. If miss, do datasource

    5. Cache and return slow thing.

    */

    

    cached, found := cache.Value(key)

    if found {

        return cached, nil

    }


    else if _, ok := n.data[key]; ok 

    {

        //measure how often a key gets called.

        cache.Set(key, n.data[key], cache.DefaultExpiration)

        return n.data[key], nil

    } else {

        return nil, fmt.Errorf("key not found %v", ok)

    }

}





func getFromDS(datasource DataSource, key string) (string, error) {


    

    v, err := datasource.Value(key)

    

    //create a map that decays based on time.


    if err != nil {

        return "", nil

    }


    return fmt.Sprint(v), nil

}

我做错了什么?我正在尝试输入一个密钥,然后从缓存或数据库中返回值。不知道我在语法上做错了什么!


宝慕林4294392
浏览 121回答 1
1回答

心有法竹

go 条件语句遵循以下语法   if something{      ......   } else if something{      ......   } else{      ......   }
随时随地看视频慕课网APP

相关分类

Go
我要回答