Re:Go(lang): Robust generic functions on slices
by __s on Saturday February 24, 2024 @07:47AM
(#39491116)
By returning nil, the function makes it clear that it doesn't move the input reference
Re:Go(lang): Robust generic functions on slices
by stouset on Saturday February 24, 2024 @04:28PM
(#39495283)
Yes, but now I have to keep track of which functions invalidate-and-return and which return nil. If I forget that `slices.Delete` returns a new slice instead of mutating in-place, the language doesn’t help me.
The first "fine" scenario is fine because `slices.Sort` works in place, it doesn't return a value at all.
And the other "fine" versions do essentially what you advocate, by overwriting the invalid reference with the new one.