Unless I&#x27;m mistaken it is technically true though, AFAIK other languages fall in two broad groups<p>* heap-based languages (vast majority of the high-level ones), everything is treated as heap-allocated, may be stack-allocated as an optimisation (while ensuring&#x2F;conserving heap semantics)[0]<p>* stack&#x2F;heap languages, strict semantic separation between heap allocation and stack allocation, the developer decides whether values get heap-allocated or stack-allocated<p>Go has the semantics separation of the latter (whether something is heap-allocated or stack-allocated had strong semantic significance and is not dependent on the thing&#x27;s type) but the control of the former (the runtime decides and doesn&#x27;t tell you)<p>[0] a subset of these languages may have &quot;value types&quot; which have stack allocation semantics, that&#x27;s linked to the type itself and the semantics are stable