Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何执行这个Go二进制文件?_Go - Fatal编程技术网

如何执行这个Go二进制文件?

如何执行这个Go二进制文件?,go,Go,我被告知要构建一个go二进制文件并像这样执行它 go build hello-world.go $ ls hello-world hello-world.go ./hello-world hello world 因此,go构建hello-world.go获取人类可读的hello-world.go文件并创建一个二进制文件 我的两个问题是: 通常,编译代码和直接可执行文件的优点是什么?它是否不依赖于您的OSX或任何其他依赖项?为什么 为什么/hello world执行创建的二进制文件 执行创建的

我被告知要构建一个go二进制文件并像这样执行它

go build hello-world.go
$ ls
hello-world hello-world.go

./hello-world
hello world
因此,
go构建hello-world.go
获取人类可读的
hello-world.go
文件并创建一个二进制文件

我的两个问题是:

  • 通常,编译代码和直接可执行文件的优点是什么?它是否不依赖于您的OSX或任何其他依赖项?为什么

  • 为什么
    /hello world
    执行创建的二进制文件


  • 执行创建的二进制文件的原因是基于shell脚本的概念。想想bash,每个bash文件都是
    #/bin/bash
    表示它是一个shell引擎可执行的shell脚本。通过权限使此文件可执行,允许使用.
    /file.sh执行该文件,因为解释器会被触发。在本例中,Go配置为以相同方式运行。Brian Kernighan帮助创建了UNIX,他也是Golang团队的成员,因此文件执行的概念在体系结构上得到了广泛的应用

    编译代码的优点是,能够在运行时进行静态分析,Go是一种强类型的langauge。这是因为编译后的代码允许进行多次优化

  • 关于编译语言(如Golang)和解释语言(如Ruby)有很多讨论,但一般来说,编译语言更快,因为编译阶段优化了代码,而且目标机器可以在不需要使用解释器的情况下以本机方式运行程序(额外层)

  • 所有二进制文件都可以在相同的操作系统和体系结构之间移植。这意味着,如果您在64位Linux体系结构上编译Golang应用程序,您将无法在32位Linux体系结构上运行它
  • 这是在基于Linux和Unix的系统上执行二进制文件的标准方法。如果二进制文件不在
    $PATH

  • “但基本上,编译语言更快”——这是一种误导,并非100%正确。实现一个递归算法,看看“解释的”nodejs如何优于编译的go。对于JIT’ted语言,编译/解释语言的性能点并不明显。我将完全删除该项。好的,让我重新措辞和编辑,说它们通常更快,而不是“基本上”“解释”语言在运行时也会优化。还有一些语言,即使是编译的,也会在目标平台jvm、.net的运行时进行一些额外的优化。整个项目“1”严重误导。“所有二进制文件在同一操作系统和体系结构之间是可移植的”---默认情况下不依赖于LBC吗?我认为在回答问题之前,你必须考虑你的读者,然后将读者淹没在文本的墙下。这是他第一次编译和运行二进制文件,为什么你认为有必要编写“页面”?你的第一个问题已经争论了几十年,并且可能会继续争论几千年。没有可能用足够短的格式来回答这个问题。你们的第二个问题是离题的,它是“如何使用101电脑”。也许超级用户会是一个更好的提问的地方。