Kdo psal, že je všechno špatně?
Objekt je v Go onen nezapouzdřený struct?
Je klonování klíčovou funkcionalitou objektového systému?
Řeší Object.assign nastavení správného prototypu?
Rádi se necháme poučit (tj. comment).
1. Tohle je subjektivní. Každý si může udělat názor sám.
2. Go není objektové, ale umí chování objektů emulovat. Samozřejmě to nesplňuje požadavky objektových puristů, ale to nesplňuje ani Java nebo Javascript.
3. Nevím, co myslíte objektovým systémem.
4. let copy = Object.assign({ __proto__: obj.__proto__ }, obj);
2. Nejde mi o purismus, jen si nechci přidělávat práci - čím lepší je implemetace OOP, tím víc práce mi to ušetří. Java je slabá, ale Javascript je na tom o dost lépe, a o tom to je.

3. Myslím zde implementaci OOP, nějaký zazyk.
4. A nešlo by to jednodušeji? mimochodem z dokumentace: "It uses [[Get]] on the source and [[Set]] on the target, so it will invoke getters and setters." To může být na škodu. Neboli nejedná se o nízkoúrovňový klon.