Go中的抽象模式

I have two interfaces. They are almost the same, the only difference is the Set method:

type Cache1 interface {
    Set(key, value interface{}, ttl time.Duration) bool
}

type Cache2 interface {
    Set(key, value interface{}) bool
}

Any idea how to unite them into one abstraction? Surely I can add ttl time.Duration to the second interface, but it will useless there and will worsen code readability. Could you please suggest sophisticated pattern if such exist?

I guess, you should care of interface segregation principle while merging those methods.

Technically, you are able to merge them by wrapping all arguments to SetRequest or something. Interface will be sort of

type Cache interface {
    Set(request SetRequest) bool
}

Another opportunity just came in mind is unite interfaces into one:

type Cache interface {
    Set(key, value interface{}, ttl time.Duration) bool
}

And ignore redundant argument in method signature if necessary:

func (c *cache) Set(key, value interface{}, _ time.Duration) bool {