как лучше обращаться к Go, через Proxy или FastCGI?
И так и так хорошо. Я все же предпочитаю вариант проксировать запросы на Go.
Не могу проверить вообще, так как на рабочей машине Windows.
Это не проблема, поставьте виртуалку и вперед. В конце-концов: личный опыт лучше любых объяснений.
И ещё очень странный вопрос: нужно-ли при таком подходе компилировать Go? Просто где-то видел пример кода, когда обращаются к исходному файлу с расширением .go.
Компилировать нужно, особенно в случае большого приложения.
Да, можно сделать:
go run file.go
Но, во-первых, код все равно компилируется в бинарник и выполняется при таком подходе, просто это происходит в папке с временными файлами и как бы скрыто от Вас.
Во-вторых, этот подход не катит, если в папке с проектом больше файлов нежели file.go (имеется в виду на уровне package main).
В-третьих, это обязует Вас иметь установленный Go соответственной версии на production серверах, когда обычный бинарник этого не требует.
В-четвертых, а как быть в таком случае с демонизацией и zero downtime reloads? Да, можно, но неудобно, учитывая что каждый раз нужно будет перекомпиливать.
Лучше скомпилировать один раз и не заморачиваться.
Команда go run больше подходит для небольших файлов аля скрипт для выполнения одноразовой работы и тому подобное.
Прошу не кидать камнями, я только учусь правильному написанию веб-сайтов на Go.
Учиться - всегда полезно, никто камнями кидать не будет.