In the go-ethereum codebase, there's a type called CallMsg that's used in a number of cases, and the documentation says
// input data, usually an ABI-encoded contract method invocation
and it takes a byte array. As far as I can tell, if you want to interact with contracts programmatically with Go, using this type is usually involved. Given a Solidity contract, how would I use this to invoke a method on that Solidity contract?