Go архитектуро зависимый?
Тут всё как и с другими языками, не использующими виртуальную машину: обычно работает только на той, где скомпилировано. Но может работать, если скомпилировано на совместимой архитектуре. Скажем, собрано на i686 - запустится и на amd64. Но не на arm.
Виртуальной машины нет, есть легковесный runtime. Окружение, библиотеки тащить не нужно, статическая компиляция в один исполняемый бинарник. Архитектуру целевого процессора при кросскомпиляции указывать нужно, иначе работать не будет. Сам процесс кросскомпиляции тривиален, проще я не видел в других языках.