İşlev if else ifadeleriyle çalışmaz [yinelenen]
Jan 15 2021
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 Jan 15 2021 at 14:39
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ı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'