type Store interface { Get(ctx context.Context, id string) (string, error) BulkUpsert(ctx context.Context, data map[string]string) error Delete(ctx context.Context, id string) error Open() error Close() error } func Show(ctx context.Context, id string, s Store) { data, err := s.Get(ctx, id) } type Getter interface { Get(ctx context.Context, id string) (string, error) } func Show(ctx context.Context, id string, g Getter) { data, err := g.Get(ctx, id) } type Reader interface { Read(p []byte) (n int, err error) } type Writer interface { Write(p []byte) (n int, err error) } type Closer interface { Close() error } type ReadWriter interface { Reader Writer } type WriteCloser interface { Writer Closer } type ReadWriteCloser { Reader Writer Closer } .BOZ(PTUBOEBSEQBDLBHFTBMTPXPSLMJLFUIJTFHJPQBDLBHF