यदि अन्य स्टेटमेंट [डुप्लिकेट]

Jan 15 2021

मैं गो के साथ एक बुनियादी कैश सिस्टम बनाने की कोशिश कर रहा हूं।

किसी कारण से जब मैं इसे चलाता हूं, तो अन्य कथन में त्रुटि होती है।

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
}

मैं क्या गलत कर रहा हूं? मैं एक कुंजी दर्ज करने का प्रयास कर रहा हूं, फिर कैश या डेटाबेस से मान लौटाएं। यकीन नहीं है कि मैंने सिंटैक्स के साथ क्या गलत किया है!

जवाब

1 heheh Jan 15 2021 at 14:39

सशर्त विवरण निम्न सिंटैक्स का अनुसरण करते हैं

   if something{
      ......

   } else if something{
      ......

   } else{
      ......
   }

एक विस्तृत जवाब