İşlev if else ifadeleriyle çalışmaz [yinelenen]
Go ile temel bir önbellek sistemi oluşturmaya çalışıyorum.
Bazı nedenlerden dolayı bunu çalıştırdığımda, if else ifadesi bir hataya neden oluyor.
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
}
Neyi yanlış yapıyorum? Bir anahtarı girmeye çalışıyorum, ardından değeri önbellekten veya veritabanından döndürüyorum. Sözdiziminde neyi yanlış yaptığımdan emin değilim!
Yanıtlar
1 heheh
go koşullu ifadeler aşağıdaki sözdizimini izler
if something{
......
} else if something{
......
} else{
......
}
detaylı bir cevap
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı