On Wednesday, October 17, 2018 at 12:22:15 AM UTC+1, Patrick Smith wrote:
>
> On Tue, Oct 16, 2018 at 3:33 AM alanfo <alan...@gmail.com <javascript:>> 
> 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
>
> }
>

 I'm wobbling a bit on disallowing the overloading of the indexation 
operator following something Eric said in response to that.

However, as long as the proposal includes the ability to overload 
conversions as well as operators (another point I made earlier), the 
example you gave could be dealt with by implementing a conversion to []int 
so you could then use all the latter's properties to code a common function.

Alan

-- 
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.

Reply via email to