Ещё недостаток «Гоу»

В отличие от многих языков, в «Гоу» символ решётки не позволяет комментировать строку. В упомянутых языках это сделано не зря. В различных ЮНИКС-подобных системах, если запускаемый файл начинается с последовательности «#!», то считается, что дальше идёт путь до интерпретатора, который умеет обрабатывать запускаемый файл. Таким образом работают, например, все шелл-скрипты.

Сам же язык, встретив первой строкой «#!/bin/какой-то путь» просто посчитает это комментарием. Так поступает Пайтон, ПХП, Перл и ещё целая куча языков. Это удобно.

В «Гоу» такого нет. Несмотря, что в первой версии появилась команда «go run», позволяющая запускать программы из командной строки, не компилируя их (на самом деле компилируя, но результат не сохраняется), я не могу указать в первой строке «#!/usr/local/bin/go run», «Гоу» меня отругает:

bolk@dhcp-174 ~ $ ./main.go 
package : 
main.go:1:1: illegal character U+0023 '#'

Прискорбно.

Комментарии 6

Денис Попов (besisland.name) № 3
В PHP ситуация совсем иная: директива должна находиться не внутри кода, а перед ним, с точки зрения синтаксиса PHP это текст, который будет выведен в STDIN. CLI-интерпретатор этот случай обрабатывает исключительно.
Евгений Степанищев (bolknote.ru) автор № 4
Ну, интерпретатор для командной строки есть, уже хорошо (я, правда, никогда утилиты командной строки не пробовал пускать в веб-сервере).
guest № 5
В Lua '#' не комментирует, но:
«Lua может использоваться в качестве интерпретатора скриптов в системах Unix, если учесть то, что интерпретатор пропускает первую строку скрипта если она начинается с #. Таким образом, скрипты Lua могут быть превращены в исполняемые программы вызовом chmod +x и добавлением #! в начало файла, как показано в следующем примере:»