Skip to content

第一个Go程序

本文档将指导您创建并运行第一个Go程序,学习Go项目的基本结构和编译运行方法。

📋 目录

项目初始化

创建项目目录

首先创建一个新的项目目录:

bash
# 创建项目目录
mkdir hello
cd hello

初始化Go模块

使用Go Modules管理依赖(Go 1.11+推荐方式):

bash
go mod init hello

这个命令会创建一个go.mod文件,内容如下:

module hello

go 1.21

go.mod文件作用:

  • 定义模块名称和Go版本
  • 管理项目依赖
  • 支持版本控制和依赖解析

编写Hello World

创建主程序文件

在项目目录中创建main.go文件:

go
package main  // 声明main包,表明这是一个可执行程序

import "fmt"  // 导入标准库fmt包,用于格式化输出

func main() {  // main函数是程序的入口点
    fmt.Println("Hello, World!")  // 输出文本到控制台
}

代码结构说明

  1. 包声明package main 表示这是一个可执行程序
  2. 导入语句import "fmt" 引入格式化输出包
  3. 主函数func main() 是程序执行的入口点
  4. 输出语句fmt.Println() 输出文本并换行

开发工具提示

💡 VS Code用户:如果右下角弹出Go扩展安装提示,请点击"Install All"安装所有推荐插件,这将提供语法高亮、代码补全、调试等功能。

编译

go build命令表示将源代码编译成可执行文件。

在hello目录下执行:

go build

或者在其他目录执行以下命令:

go build hello

go编译器会去 GOPATH的src目录下查找你要编译的hello项目

编译得到的可执行文件会保存在执行编译命令的当前目录下,如果是windows平台会在当前目录下找到hello.exe可执行文件。

可在终端直接执行该hello.exe文件:

c:\desktop\hello>hello.exe
Hello World!

我们还可以使用-o参数来指定编译后得到的可执行文件的名字。

go build -o heiheihei.exe

Windows下VSCode切换cmd.exe作为默认终端

如果你打开VS Code的终端界面出现如下图场景(注意观察红框圈中部分),那么你的VS Code此时正使用powershell作为默认终端:

VS Code PowerShell终端

十分推荐你按照下面的步骤,选择cmd.exe作为默认的终端工具:

终端选择下拉菜单

此时,VS Code正上方中间位置会弹出如下界面,参照下图挪动鼠标使光标选中后缀为cmd.exe的那一个,然后点击鼠标左键。

最后重启VS Code中已经打开的终端或者直接重启VS Code就可以了。

终端类型选择界面

如果没有出现下拉三角,也没有关系,按下Ctrl+Shift+P,VS Code正上方会出现一个框,你按照下图输入shell,然后点击指定选项即可出现上面的界面了。

VS Code命令面板

go run

go run main.go也可以执行程序,该命令本质上也是先编译再执行。

go install

go install表示安装的意思,它先编译源代码得到可执行文件,然后将可执行文件移动到GOPATH的bin目录下。因为我们的环境变量中配置了GOPATH下的bin目录,所以我们就可以在任意地方直接执行可执行文件了。

跨平台编译

默认我们go build的可执行文件都是当前操作系统可执行的文件,如果我想在windows下编译一个linux下可执行文件,那需要怎么做呢?

只需要指定目标操作系统的平台和处理器架构即可,例如Windows平台cmd下按如下方式指定环境变量。

SET CGO_ENABLED=0  // 禁用CGO
SET GOOS=linux  // 目标平台是linux
SET GOARCH=amd64  // 目标处理器架构是amd64

注意:如果你使用的是PowerShell终端,那么设置环境变量的语法为$ENV:CGO_ENABLED=0。

然后再执行go build命令,得到的就是能够在Linux平台运行的可执行文件了。

Mac 下编译 Linux 和 Windows平台 64位 可执行程序:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

Linux 下编译 Mac 和 Windows 平台64位可执行程序:

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

Windows下编译Mac平台64位可执行程序:

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build

现在,开启你的Go语言学习之旅吧。人生苦短,let’s Go.

基于 MIT 许可发布