Какая уместная линия Go shebang?
Мне нравится использовать shebangs для непосредственного запуска скриптов Perl:
#!/usr/bin/env perl
Что такое программы shebang для Go?
Ответы
Ответ 1
//usr/bin/go run $0 [email protected] ; exit
Пример:
//usr/bin/go run $0 [email protected] ; exit
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
go treat//как комментарий одной строки
и shell игнорировать дополнительные/
Ответ 2
По умолчанию не существует. Существует сторонний инструмент, называемый gorun, который позволит вам это сделать. https://wiki.ubuntu.com/gorun
К сожалению, компиляторам не нравится строка shebang. Вы не можете скомпилировать тот же код, который вы используете с gorun.
Ответ 3
Я предпочитаю это:
///bin/true; exec /usr/bin/env go run "$0" "[email protected]"
Это имеет несколько преимуществ по сравнению с ответом هومن جاویدپور:
-
Использует "exec" для замены нового процесса оболочки вместо запуска процесса внука. В результате ваша программа Go станет прямым дочерним процессом. Это более эффективно, и это также важно для некоторых передовых ситуаций, таких как отладка и мониторинг.
-
Правильное цитирование аргументов. Пробелы и специальные символы не вызовут проблем.
-
Ведущий "///" более совместим со стандартами, чем просто "//". Если вы используете только "//", вы рискуете столкнуться с определенным поведением. Здесь цитата из http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html:
Если путь начинается с двух последовательных символов, первый компонент, следующий за ведущими символами, может быть интерпретирован в соответствии с реализацией, хотя более двух ведущих символы должны рассматриваться как один символ.
Я проверил этот ответ с помощью bash, dash, zsh и ksh.
Пример:
///bin/true; exec /usr/bin/env go run "$0" "[email protected]"
package main
import "fmt"
func main() {
fmt.Println("你好!")
}
Ответ 4
Программы Go собираются в двоичные файлы; Я не думаю, что есть возможность запускать их непосредственно из источника.
Это похоже на другие скомпилированные языки, такие как С++ или Java. Некоторые языки (например, Haskell) предлагают как полностью скомпилированный режим, так и режим "script", который можно запускать непосредственно из источника с помощью строки shebang.