练习 -“Hello World”

已完成

在本部分中,你将编写你的第一个 Go 程序,向屏幕打印一条消息。 此练习是开始使用编程语言的一种典型方法。 你还将了解有关 Go 命令行接口 (CLI) 的详细信息,以及如何生成并运行 Go 应用程序。

将 IDE 配置为从 CLI 打开

可以从 CLI 提示符打开 Visual Studio Code IDE,并开始编辑当前工作区中的文件。 此 IDE 功能是通过使用 $PATH(或 $Path)系统环境变量来实现的。 启用此功能后,可以从 CLI 使用 code . 命令来打开 IDE 并编辑当前目录中的文件。

默认情况下,某些 Visual Studio Code 安装会将对 CLI 的支持添加到 $PATH 变量中。 在安装过程中,你可能会看到此选项。 如果已配置此设置,即准备妥当。 否则,可能需要执行以下步骤才能使用此功能。

Linux 或 macOS

按照以下步骤在 $PATH 环境变量中注册 Visual Studio Code CLI:

  1. 打开 Visual Studio Code。

  2. 在“视图”下,选择“命令面板”。

  3. 在搜索框中,输入“shell 命令”。 键入时,结果将进行筛选。

  4. 选择“Shell 命令: 在 PATH 中安装 "code" 命令”命令。

  5. 关闭已打开的命令或终端提示符。

    重要

    如果你已在上一个练习中打开了一个提示符,请关闭该提示符并打开一个新的提示符。 要使新的 $PATH 值生效,需要执行此步骤。

  6. 关闭 Visual Studio Code。

Windows

请按照以下步骤将 Visual Studio Code CLI 的位置添加到 $Path 系统环境变量中:

备注

如果你熟悉环境变量,并且知道如何将新位置添加到 $Path 系统变量,则可以使用最适合你的方法进行操作。 以下过程有点长,但是它是一种经过验证的方法,可以确保正确更新变量。

  1. 打开 Windows“控制面板”。

  2. 选择“系统”,然后选择“高级系统设置”。

  3. 在“系统属性”对话框的“高级”下,选择“环境变量”。 此时将打开“编辑环境变量”对话框。

    “编辑环境变量”对话框将显示两个列表:

    • <user-name> 的用户变量:特定用户的局部变量定义。
    • 系统变量:所有用户的系统变量定义。

    在此过程中,我们将使用系统变量。

  4. 在“环境变量”对话框的“系统变量”列表框中,滚动以找到“路径”变量。

  5. 选择“路径”变量以突出显示该行。 选择“编辑”。 此时将打开“编辑环境变量”对话框。 此对话框列出了变量中定义的所有文件夹位置。

  6. 在“编辑环境变量”对话框中,选择“新建”。 此时列表的末尾将打开一个空行。

  7. 在空行中,输入 Visual Studio Code CLI 可执行文件的位置。 请将 <user-name> 替换为你的用户名。

    C:\Users\<user-name>\AppData\Local\Programs\Microsoft VS Code\bin
    
  8. 选择“确定”关闭每个对话框。

  9. 关闭“系统属性”对话框和 Windows“控制面板”。

步骤 1:打开 Go 工作区和 IDE

在确认可以从 CLI 使用 Visual Studio Code 之后,就可以打开 Go 工作区了。

  1. 打开一个新的命令或终端提示符。

  2. 通过运行以下命令来打开 Go 工作区目录:

    cd $GOPATH/src
    
    cd %GOPATH%/src
    
  3. 使用以下命令从工作区打开 Visual Studio Code:

    code .
    

此时 Visual Studio Code 将启动。 “资源管理器”视图显示在左侧,“欢迎”页显示在右侧。

在“资源管理器”视图中,Go 项目的 SRC 部分应处于打开状态(已展开)。 这部分是项目的 /src 文件夹。 它目前是空的,但是我们将在下一步中添加一些内容。

步骤 2:创建一个新文件夹和一个 Go 文件

我们向 Go 项目添加一个文件夹和文件。 Visual Studio Code 中有几种创建新项的方法:

  • 在工具栏菜单上执行操作:
    • 选择“文件”>“打开文件夹”,然后创建一个新文件夹。
    • 选择“文件”>“新建文件”,然后启动一个新文件。
  • 使用“欢迎”页上的链接,这与工具栏菜单操作类似。
  • 使用“资源管理器”视图中的图标,它位于“SRC”部分右侧:
    • 选择“新建文件夹”图标。 在文本框中,键入文件夹名称,然后按 Enter。
    • 选择“新建文件”图标。 在文本框中,键入文件名称,然后按 Enter。

在 Visual Studio Code 中完成以下步骤。 若要创建新的文件和文件夹,请使用最适合自己的过程。

  1. 创建一个名为“helloworld”的新文件夹。

  2. 为应用代码创建一个名为“main.go”的新文件。

  3. 展开“资源管理器”>“SRC”视图以显示文件夹结构树。 应如以下示例所示:

    SRC/
        helloworld/
            main.go

安装 Go 扩展工具

如果 main.go 是你在 Visual Studio Code 中打开的第一个 Go 文件,系统可能会提示你为 Go 扩展安装其他工具。 出现提示时,请选择“安装”。 IDE 的底部将打开一个终端,以显示该过程的输出。 应当会看到与以下示例类似的输出:

工具环境:GOPATH=C:\Projects\Go
在模块模式下在 C:\Projects\Go\bin 中安装 5 个工具。
安装 github.com/uudashr/gopkgs/v2/cmd/gopkgs (C:\Projects\Go\bin\gopkgs.exe) 成功

在安装过程中,请在 Visual Studio Code 中检查状态栏。 如果在右下角看到一条消息,比如“未安装所有工具”,请选择该消息。 在弹出窗口中,选择“安装”。

如果安装过程成功,终端输出将显示一个摘要:

已成功安装所有工具。 现在可以使用 Go 了 :)。

步骤 3 - 将代码添加到 Go 文件

现在我们将代码添加到 Go 文件。

  1. 在 main.go 文件中,添加以下代码:

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello World!")
    }
    
  2. 保存该文件。

不必担心代码格式设置(如标签与空格)。 当你每次保存文件时,Visual Studio Code 会自动设置代码的格式。

步骤 4:执行 Go 程序

Go 程序可以在命令或终端提示符中执行,也可以在 Visual Studio Code 内部运行的终端中执行。

你可以使用现有提示符,也可以打开一个新的提示符。 如果打开新的提示符,请记得将目录位置更改为 Go 工作区。 另外,请确保从包含 Go 文件($GOPATH/src/helloworld) 的文件夹中运行该程序。

在 Visual Studio Code 中打开一个终端

如果你要从 Visual Studio Code 内,而不是在独立的命令或终端提示符中运行程序,请执行以下步骤:

  1. 在 Visual Studio Code 中,选择“终端”,然后选择“新建终端”。

  2. 在终端右上角的下拉框中,选择“新建命令提示符”。

  3. 在终端中,运行以下命令以将目录位置更改为 Go 工作区和包含 Go 文件的文件夹:

    cd $GOPATH/src/helloworld
    
    cd %GOPATH%/src/helloworld
    

运行 Go 应用

若要运行 Go 应用,请在终端或提示符中使用以下命令:

go run main.go

应会看到以下输出:

Hello World!

go run 命令执行两项操作。 它编译应用,并在编译成功后执行应用。

生成可执行文件

若要为程序生成可执行文件,请使用以下命令:

go build main.go

go build 命令完成时,它会生成一个可执行应用,你不需要进一步处理即可随时运行该应用。 该命令仅生成可执行文件。 它不会像 go run 命令那样运行程序。

查看 /src 内容

现在,你的项目在“资源管理器”>“SRC”视图中应如下所示:

SRC/
    helloworld/
        主要
        main.go

在“资源管理器”视图中,不带扩展名的文件名是可用于运行程序的可执行文件。 (在 Windows 上,此文件实际上具有 .exe 扩展名。)在开发时,请使用 go run 命令。 若要为应用程序生成二进制文件,请使用 go build 命令,并将二进制可执行文件部署到适当的环境。

你刚刚以 Go 编写了什么?

你创建了你的第一个 Go 应用,并确保它能够编译和运行。 接下来逐行检查代码。

我们将从 Go 文件中的第一个语句开始:

package main

我们在 package main 语句中告诉 Go,我们将要创建的应用是一个可执行程序(可以运行的文件)。 我们的“Hello World!”应用是 main 包的一部分。 包是一组常用的源代码文件。 每个可执行应用都具有此第一行,即使项目或文件具有不同的名称。

我们将在下一个模块中详细介绍这些概念。 现在,我们需要知道每个可执行程序都应是 main 包的一部分。

挑战:更改包名称

能否确认 main 包的重要性?

  1. 在 Go 文件中,更改第一行中的包名称。
  2. 保存该文件,然后在终端中再次运行程序。

  发生什么情况? 是否看到了“Hello World!”? 是否生成了二进制可执行文件?

 

显示答案
"Hello World!" 不显示。 不会生成二进制可执行文件。 应看到错误:`go run: cannot run non-main package`。 为什么? 每个可执行程序都应该是 `main` 包的一部分。

下面是 Go 文件中的下一行:

import "fmt"

import 语句使你的程序可以访问其他包中的其他代码。 在本例中,fmt 为标准库包。 你可以在官方 Go 文档网站上了解 fmt 包。

你需要此 import 语句,因为你将在此程序的稍后部分使用此包中的函数将消息打印到屏幕上。 可以在程序中包含你想要或需要的任意数量的 import 语句。 但是,Go 在这方面是惯用的。 如果导入包,但不使用包中的相应函数,应用将不会进行编译。 Visual Studio Code 的一大功能是,当你保存文件时,它会自动删除程序中未使用的导入。

Visual Studio Code 是否在你保存文件时删除了导入? 尝试在不使用 Visual Studio Code 的情况下编辑文件,然后尝试运行应用。 你现在看到了什么输出?

挑战:添加另一个导入

能否确认你了解未使用的导入?

  1. 将你的 Go 文件还原为原始代码。
  2. 添加另一个导入语句,如 mathio
  3. 保存该文件,然后在终端中再次运行程序。

  发生什么情况? Visual Studio Code 是否删除未使用的导入? 如果已删除,是何时删除的?

  1. 再次编辑 Go 文件,但不要使用 Visual Studio Code。
  2. 保存该文件,并在新提示符中运行程序。

  发生什么情况? 你现在看到了什么输出?

 

显示答案
如果在 IDE 中编辑 Go 文件,当你保存文件时,Visual Studio Code 将检测到所有未使用的包,并删除相应的 `import` 语句。 如果在 Visual Studio Code 外部编辑 Go 文件,代码将失败。 你应会看到一个错误,比如:`# command-line-arguments .\main.go:5:2: imported and not used: "math"`。

我们来看看 Go 文件中的代码块:

func main() {
   fmt.Println("Hello World!")
}

func 语句是用于声明函数的保留字。 第一个函数名为“main”,因为它是程序的起始点。 整个 package main 中只能有一个 main() 函数(在第一行中定义的那个)。 在 main() 函数中,你调用了 fmt 包中的 Println 函数。 你发送了你希望在屏幕上看到的文本消息。

还有更多关于函数的内容,我们将在下一个模块中介绍。