The easiest solution is that []int IS A IntList by definition, no ? Meaning that an “slice” has defined methods Len(), and At(). I would personally define other methods on slice too for convenience (like, Insert, Delete). The [] notation is just syntactic sugar for slice.At(). When used as a left side, it is syntactic sugar for Set().
> On Oct 16, 2018, at 6:21 PM, Patrick Smith <pat42sm...@gmail.com> wrote: > > On Tue, Oct 16, 2018 at 3:33 AM alanfo <alan.f...@gmail.com > <mailto:alan.f...@gmail.com>> wrote: > I would also disallow overloading of the =, :=, <-, ..., [], {}, () and yes - > equality operators - as well because I believe to do otherwise would be very > confusing. > > If overloading [] were disallowed, how would one write a generic function > taking a single argument of type either []int or a user-defined type with > similar behavior, and returning the sum of the elements? Sort of the marriage > of these two functions: > > func SumIntSlice(s []int) int { > sum := 0 > for _, i := range s { > sum += i > } > return sum > } > > type IntList interface { > Len() int > At(int) int > } > > func SumIntList(l IntList) int { > sum := 0 > for n := 0; n < l.Len(); n++ { > sum += l.At(n) > } > return sum > } > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com > <mailto:golang-nuts+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.