La función no funcionará con declaraciones if else [duplicado]

Jan 15 2021

Estoy intentando construir un sistema de caché básico con Go como tutorial.

Por alguna razón, cuando ejecuto esto, la instrucción if else genera un error.

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
}

¿Qué estoy haciendo mal? Estoy tratando de ingresar una clave, luego devolver el valor del caché o de la base de datos. ¡No estoy seguro de lo que hice mal con la sintaxis!

Respuestas

1 heheh Jan 15 2021 at 14:39

ir declaraciones condicionales sigue la siguiente sintaxis

   if something{
      ......

   } else if something{
      ......

   } else{
      ......
   }

una respuesta detallada