Define Interfaces at the Consumer
Because any type can satisfy any interface, you define interfaces where they are used, not where the type is defined. A function that needs to read data takes an io.Reader, not a *os.File. This makes your API flexible without any planning — concrete types opt in automatically.