Chapu, ze pristup Go ma svoje vyhody a muze byt prijemny, na druhou stranu zase nevidim zadnou zvlastni komplikaci v tom, ze implementaci interface/traitu musi autor explicitne deklarovat. Typovy system to pozna, prekladac to validuje, prace s tim prakticky zadna neni
No kdyz muze prekladac najit definici traitu kdekoli ve zdrojacich, tak uplne stejne muze najit i ten konflikt, takze to mi uplne jako argument neprijde.
Možná jsme se nepochopili, já jsem to moc nerozvedl. Může nastat situace, kdy chci naimplementovat v jednom typu dva traity se stejnou metodou (signarurou metody a bez explicitního přiřazení do daných traitů to nejde udělat. Pak samozřejmě musím mít způsob, jak danou metodu vybrat, když ji potřebuju volat:
https://stackoverflow.com/questions/44953197/how-do-i-disambiguate-traits-in-rustKonflikt překladač najít může, ale vyřešit ho neumí. Další věc je, že pokud se sejdou dva traity se stejnou signaturou metody, je dost možné, že ta metoda nemá tu samou sémantiku, byť se jmenuje stejně. Takže já mám interface, Pepa zvolil jméno metody stejné jako je v interface, takže formálně ten interface naimplementoval, přijde Karel a bezelstně začne ten interface s tím typem používat, jenže ono to dělá trochu něco jiného, než Karel a autor toho interface předpokládali. V tomhle je nevýhoda duck typingu - předpokládat, že to samé slovo znamená vždy totéž, je obecně naivní. V uzavřeném ekosystému, kde si všichni rozumějí skoro i beze slov, problém nenastává, ale v "promiskutním" prostředí, kde se do produktu míchá X programátorů a skládá výsledek z Y externích knihoven, problém může být velký.