If I am declaring a function or channel that returns a struct, I may want to return it by pointer for efficiency but not want clients messing about with its content. In the absence of the ability to express that in the language, is there some common convention for indicating "please don't modify it"? Is it simply that client should always assume that unless clearly told otherwise, in the spirit of "share memory by communicating"? If that is the case, that raises the question how to indicate mutability.

Note I am not asking for opinions on how any one person might do it, whether it is worth it in any given situation or what other mechanisms the language has. I am asking if there is any generally accepted community-standard convention to indicate these things, in the same way that Go has clear conventions for [how to document functions](https://blog.golang.org/godoc)

Assume the struct is big enough for the difference to matter in context, and of course that benchmarking has shown that.

As noted in comments, clearly returning an encapsulated struct with perhaps a read only interface would be preferable, but I am re-using existing structs and refactoring every other use of them would be a major undertaking that I do not wish to embark on right now.