代码准备
创建 demo.go 文件,并写入以下代码:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
go build 命令
go build命令用来启动编译,他可以将Go语言程序与相关依赖编译成一个可执行文件。其语法格式如下:
go build filename
其中 filename 为所需要的参数,可以是一个或多个以空格为间隔的Go源文件名, 也可以省略不写。
执行 go build 命令时,提供不同的参数执行结果也是不同的。
当参数不为空时
如果 filename 为同一 main 包下的所有源文件名(一个或多个),编译器将生成一个与第一个 filename 同名的可执行文件 (如执行 go build first.go second.go three.go 则会生成一个 abc.exe 文件);
如果 filename 为非 main 包下的源文件名,编译器将只对该包进行语法检查,不生成可执行文件。
示例:
D:\2www\go
λ ls
bin/ demo.go pkg/
D:\2www\go
λ go build demo.go # 执行go build
D:\2www\go
λ ls
bin/ demo.exe* demo.go pkg/ # 生成了exe 文件
D:\2www\go
λ demo.exe # 执行 exe 文件
Hello World!
当参数为空时 — 执行遇到mod相关报错,后续实践通过后,更新代码示例
如果当前目录下存在 main 包,则会生成一个与当前目录名同名的 “目录名.exe” 可执行文件(如在hello目录中执行 go build 命令时,会生成 hello.exe 文件);
如果不存在 main 包,则只对当前目录下的程序源码进行语法检查,不会生成可执行文件。
go build 命令只有在执行出错的情况下才会有信息返回,执行成功的话是没有信息返回的,但是会在当前目录下生成一个相应的 exe 可执行文件。
go run 命令
go run 命令将编译和执行指令合二为一,会在编译之后立即执行 go 语言程序,但不会生成二进制文件。
go run 语法格式:
go run filename
其中 filename 为所需要的参数,必须是同一 main 包下的所有源文件名,并且不能为空。
示例:
D:\2www\go
λ ls
bin/ demo.go pkg/
D:\2www\go
λ go run # 不带参数报错
go run: no go files listed
D:\2www\go
λ go run demo.go # 执行 go run
Hello World!
D:\2www\go
λ ls # 不生成可执行文件
bin/ demo.go pkg/