package tester import ( "encoding/json" "fmt" ) type ExpiringCache struct { Value interface{} Expires int } // get string value for comparison func (e *ExpiringCache) StringValue() (string, error) { switch e.Value.(type) { case string: return e.Value.(string), nil default: data, err := json.Marshal(&e.Value) if err != nil { return "", err } return string(data), nil } } func (e *ExpiringCache) String() string { return fmt.Sprintf("%s, expires %d", e.Value, e.Expires) }