News for hackers. Stuff that matters.
Re:Go Subtleties You May Not Know by rowanseymour on Wednesday October 22, 2025 @06:50AM (#45667244)
That works until 1) you don't want to export the value types 2) the return values aren't simple structs but slices or maps because []x is not a []X even if x implements X.
Re:Go Subtleties You May Not Know by bpicolo on Wednesday October 22, 2025 @07:43AM (#45667624)
For 1/, you can return a struct value type without exporting it. If it satisfies the receiving interface they won’t have a problem.

That’s exactly the pattern I use for most Go development

Re:Go Subtleties You May Not Know by kbolino on Wednesday October 22, 2025 @01:34PM (#45672442)
This affects discoverability, though. Your unexported type won't have public documentation. So you end up having to publish an interface anyway (even if you don't return it) or document in words what the method set looks like.
Re:Go Subtleties You May Not Know by formerly_proven on Wednesday October 22, 2025 @07:20AM (#45667431)
> the return values aren't simple structs but slices or maps because []x is not a []X even if x implements X.

I assume this is because on is an array of struct pointers and the other is an array of fat pointers, since Go has reified interfaces (unlike higher-level languages).