package main

import "fmt"

func main() {
    fmt.Println("hello, world")
}

>go build main.go
>.\main.exe
hello, world

Go 语言中程序是怎么编译的?
我在运行"hello, world"程序之前,输入了 go build 命令,还有它附带的源文件名参数来编译它:

Go 是一种编译型语言,这意味着只有你编译完 Go 程序之后,才可以将生成的可执行文件交付于其他人,并运行在没有安装 Go 的环境中。

当然,Go 也借鉴了动态语言的一些对开发者体验较好的特性,比如基于源码文件的直接执行,Go 提供了 run 命令可以直接运行

$go run main.go
hello, world

复杂项目下 Go 程序的编译是怎样的?

好了,我们也不打哑谜了,是时候让 Go module 登场了!Go module 构建模式是在 Go 1.11 版本正式引入的,为的是彻底解决 Go 项目复杂版本依赖的问题,在 Go 1.16 版本中,Go module 已经成为了 Go 默认的包依赖管理机制和 Go 源码构建机制。Go Module 的核心是一个名为 go.mod 的文件,在这个文件中存储了这个 module 对第三方依赖的全部信息。接下来,我们就通过下面命令为“hello,module”这个示例程序添加 go.mod 文件: