„...V programovacím jazyce Go je ovšem situace zcela odlišná, protože v tomto jazyku existují pouze dvě pravdivostní hodnoty – true a false, které jsou typu bool. Žádné další hodnoty se nesmí v rozhodovací konstrukci if, v podmínce smyčky for atd., vyskytovat. ...mohlo by se zdát, že se jedná o přílišnou rigiditu...“
Asi záleží na úhlu pohledu. Jako C++ programátor spatřuji jednu z největších slabin jazyka právě ty spousty implicitních konverzí, nejen v rámci bool, takže jakýkoliv jazyk, který je v tomto co nejpřísnější, má u mě plus.
Navíc by se mi hodně líbilo mít něco jako „typedef“, jehož alias bude kompilátorem považován za naprosto odlišný typ, tedy např.
typedef uint16_t UserId;
UserId currentUser = someSystem.GetLoggedUserId();
uint16_t value = currentUser; // Compile error! Cannot implicitly cast from UserId to uint16_t!
Jsem si vědom toho, že je to možné řešit šablonami, ale asi je vidět, že to není úplně ideální. A třeba v C# to nelze vůbec (tam kdykoliv, kdy opravdu potřebuji izolovat typ, si implementuji strukturu, ale je to otravný copy-paste).