Basically you'd be asking for inferring a record type largely transparently. That's going to quickly explode to the most naive form because it's very hard to tell what could be called, especially in Go.
But see https://hackage.haskell.org/package/effectful for work in the general area that seems rather promising.