Go pozwala definiować metody oddzielnie od struktury/typu danych, na którym pracują. Czy oznacza to tylko elastyczność w umieszczaniu definicji metod lub czegoś więcej?Jakie są korzyści z definiowania metod Go poza definicjami struct?
Słyszałem, że system Go/struct jest porównywany z łataniem małp, ale jeśli dobrze rozumiem, to naprawdę nie można dodawać metod do żadnego istniejącego typu (struct), ponieważ metody muszą znajdować się w tym samym pakiecie co rodzaj. To znaczy. możesz poprawiać małpy tylko te typy, które i tak masz pod kontrolą. Czy może czegoś brakuje?
W jakich przypadkach zdefiniowałbyś typ i jego metody w oddzielnych plikach źródłowych (lub w różnych częściach tego samego pliku źródłowego)?
Nie widzę sposobu dodawania metod do istniejącego typu - istniejący typ to "uint" i jeśli dobrze rozumiem "Dodaj" nie będzie działać z "uint" -s. – Aivar
Tak, wybrałem skrót, nie można dodać metody do typu poza pakietem, ale można zdefiniować nowy typ na podstawie istniejącego i dodać metody do tego typu. W takim przypadku proste jest rzutowanie typu bazowego na typ rozszerzony w celu użycia tych metod (np. Co autorzy Go zrobili z typem StringSlice w pakiecie sortowania). – mna