Hàm sẽ không hoạt động với các câu lệnh if else [trùng lặp]

Jan 15 2021

Tôi đang cố gắng xây dựng một hệ thống bộ nhớ cache cơ bản với Go làm hướng dẫn.

Vì một số lý do khi tôi chạy điều này, câu lệnh if else dẫn đến lỗi.

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
}

Tôi đang làm gì sai? Tôi đang cố gắng nhập khóa, sau đó trả về giá trị từ bộ nhớ cache hoặc cơ sở dữ liệu. Không chắc mình đã làm gì sai với cú pháp!

Trả lời

1 heheh Jan 15 2021 at 14:39

câu lệnh điều kiện go tuân theo cú pháp sau

   if something{
      ......

   } else if something{
      ......

   } else{
      ......
   }

một câu trả lời chi tiết