9 ms·
> From my perspective, Go added methods primarily so that you can use them in combination with interfaces. They also give you a limited form of overloading. Wi
by munificent 28d ago
> From my perspective, Go added methods primarily so that you can use them in combination with interfaces.
They also give you a limited form of overloading. Without methods or overloading, you end up in the situation that C and Scheme are in where every operation on a data structure has to redundantly have the data structure in its name like:
list_clear(my_list);
queue_clear(my_queue);
map_clear(my_map);
- kune 28d agoIn Go you would methods for that: my_list.Clear(), my_queue.Clear() and my_map.Clear(). Now you can define a Clearer interface, which has only the Clear method. That allows you to write a function clearAndLog(item Clearer) and it will work with the list, queue and map.
- munificent 27d agoYes, that's my point. Go doesn't have overloading by parameter list signature. But you can have methods with the same name defined on different types, so there is a sort of overloading or namespacing based on the receiver type. Methods give you that.
- wasmperson 28d ago> Without methods or overloading, you end up in the situation that C and Scheme are in Well in C at least we now have this: #define clear(s) _Generic((s) \ ,struct list: list_clear \ ,struct queue: queue_clear \ ,struct map: map_clear \ )(s) clear(my_map); clear(my_list); clear(my_queue); ...although it turns out the other nice thing about methods is automatic namespacing.
- deleted 27d ago[deleted]
- so-cal-schemer 27d agoI just want to leave this here: SICP: 2.5 Systems with Generic Operations https://sarabander.github.io/sicp/html/2_002e5.xhtml https://sarabander.github.io/sicp/html/2_002e5.xhtml