Мне нравится использовать shebangs для непосредственного запуска скриптов Perl:
#!/usr/bin/env perl
Что такое программы shebang для Go?
Мне нравится использовать shebangs для непосредственного запуска скриптов Perl:
#!/usr/bin/env perl
Что такое программы shebang для Go?
//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 игнорировать дополнительные/
По умолчанию не существует. Существует сторонний инструмент, называемый gorun, который позволит вам это сделать. https://wiki.ubuntu.com/gorun
К сожалению, компиляторам не нравится строка shebang. Вы не можете скомпилировать тот же код, который вы используете с gorun.
Я предпочитаю это:
///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("你好!")
}
Go собираются в двоичные файлы; Я не думаю, что есть возможность запускать их непосредственно из источника.
Это похоже на другие скомпилированные языки, такие как С++ или Java. Некоторые языки (например, Haskell) предлагают как полностью скомпилированный режим, так и режим "script", который можно запускать непосредственно из источника с помощью строки shebang.