а в Java или C# он практически в открытом виде, почему так?
Потому что у C# и Java есть ещё одно важное свойство: у них есть виртуальная машина и они компилируются сначала в промежуточный код. А в машинный уже делается через JIT-компиляцию.
C# с недавнего времени поддерживает ещё и FullAOT - в таком режиме тоже код будет нечитабельный/нативный, как и в случае с Go.
Есть ещё F# из мира дотнета, который хоть и компилируется в промежуточный код, но там компилятор такой код генерирует, что в принципе это не далеко от обфускации будет.
Вот например в Go или Haskell не посмотришь исходный код
Если ты уже нашёл ответ на свой вопрос, то зачем задаёшь?