Go 编程入门指南

GolangGolangBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将正式开始学习 Go 编程。我们将涵盖基本概念,并自己完成一个简单的 Go 程序。

知识点:

  • 标准输出语句
  • 代码结构
  • 运行程序
  • fmt 包中的常用函数

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/CommandLineandEnvironmentGroup(["Command Line and Environment"]) go(("Golang")) -.-> go/NetworkingGroup(["Networking"]) go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go/FunctionsandControlFlowGroup -.-> go/if_else("If Else") go/FunctionsandControlFlowGroup -.-> go/functions("Functions") go/CommandLineandEnvironmentGroup -.-> go/command_line("Command Line") go/NetworkingGroup -.-> go/processes("Processes") go/NetworkingGroup -.-> go/exit("Exit") subgraph Lab Skills go/if_else -.-> lab-149062{{"Go 编程入门指南"}} go/functions -.-> lab-149062{{"Go 编程入门指南"}} go/command_line -.-> lab-149062{{"Go 编程入门指南"}} go/processes -.-> lab-149062{{"Go 编程入门指南"}} go/exit -.-> lab-149062{{"Go 编程入门指南"}} end

💡 第一个 Go 程序

让我们从创建第一个 Go 程序开始。右键点击侧边栏,在你的项目文件夹中创建一个名为 helloWorld.go 的新文件。

图片描述

注意:我们推荐使用 WebIDE(类似 VS Code)以获得更好的体验。了解更多关于 WebIDE 使用指南的内容,请点击这里

你也可以使用 touch 命令创建一个新文件:

touch helloWorld.go

现在,打开文件并编写以下代码:

package main

import "fmt"

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

第一行 package main 表示这个程序属于 main 包。第二行 import "fmt" 导入了 Go 的 fmt 包,它允许我们格式化文本的输入和输出。main 函数是程序开始执行的地方,在它内部,fmt.Println("hello, world") 会将 hello, world 打印到终端。

要运行程序,打开终端并输入以下命令:

go run helloWorld.go

如果一切设置正确,你应该会看到输出:

hello, world

这是一个简单的 "Hello World" 程序。现在,让我们逐行解释代码和操作。

程序结构与语法

在 Go 中,包(package)是代码管理的基本单位。每个 Go 程序都以 package 声明开始。在本例中,package main 告诉 Go 这段代码是主程序的一部分,将会被执行。

import "fmt" 语句导入了 Go 的 fmt 包,该包用于输入和输出。Go 拥有丰富的标准库,这使得我们可以轻松完成许多任务。fmt 包用于格式化文本输出,正如我们在上一步中看到的那样。

接下来,我们定义了 main 函数:

func main() {
}

在 Go 中,所有函数都必须以 func 开头。注意,左大括号 { 被放置在同一行的末尾。这是 Go 的惯例,与其他编程语言不同,其他语言可能会将左大括号放在新的一行。

如果你错误地将左大括号放在新的一行,像这样:

func main()
{
}

你会得到一个编译错误:

$ go run helloWorld.go
### command-line-arguments
./helloWorld.go:7:1: syntax error: unexpected semicolon or newline before {

这是因为 Go 期望左大括号直接放在同一行。

程序中的关键语句是 fmt.Println("hello, world"),它调用了 fmt 包的 Println 函数,将字符串 "hello, world" 打印到控制台。该函数会自动在字符串末尾添加一个换行符。

运行程序

Go 是一种编译型语言,但当我们使用 go run 命令时,Go 会先编译源代码,然后运行生成的可执行文件。因此,以下命令:

go run helloWorld.go

等价于运行以下两条命令:

## 编译程序
go build helloWorld.go

## 执行编译后的程序
./helloWorld

为了尝试一个新的例子,让我们修改程序以向其他 Gopher 打招呼。创建一个名为 helloGopher.go 的新文件,并将代码替换为:

你可以使用 touch 命令创建一个新文件:

touch helloGopher.go
package main

import "fmt"

func main() {
 fmt.Println("hello Gopher.")
 fmt.Println("hello Gopher.")
 fmt.Println("hello Gopher.")
}

现在,我们不再使用 go run,而是使用 go build 来编译程序,然后运行生成的可执行文件:

## 编译程序
go build helloGopher.go

## 运行编译后的可执行文件
./helloGopher

这将输出:

hello Gopher.
hello Gopher.
hello Gopher.

fmt 包中的常用函数

在第一步中,我们使用了 fmt 包中的 Println() 函数来打印输出。fmt 包是 Go 中最常用的包之一,提供了多种格式化输出的函数。

以下是三种常见的输出函数:

  1. fmt.Print() – 输出文本,不换行。
  2. fmt.Println() – 输出文本并换行。
  3. fmt.Printf() – 输出格式化文本。

让我们更详细地探索这些函数。创建一个名为 fmt.go 的新文件,并输入以下代码:

package main

import "fmt"

func main() {
    // 标准输出
    fmt.Print("hello")
    fmt.Print("world")

    // Println 在标准输出后添加换行符
    fmt.Println()
    fmt.Println("labex")

    // Printf 提供格式化输出
    fmt.Printf("%s\n", "London")
}

使用 go run 命令运行程序:

go run fmt.go

解释:

  • fmt.Print("hello")fmt.Print("world") 在同一行输出文本,因为 Print 不会添加换行符。
  • fmt.Println() 输出一个换行符以分隔行。
  • fmt.Printf("%s\n", "London") 使用 %s 占位符格式化输出字符串 "London"。

以下是这些函数的快速比较:

函数 标准输出 换行符 格式化输出
Print × ×
Println ×
Printf × ×

fmt 包还提供了其他用于读取输入、错误处理等的函数,这些将在后续的练习中介绍。

总结

在本实验中,我们编写了第一个 Go 程序,学习了 Go 程序的结构,并探索了 fmt 包中用于输出的基本函数。我们还练习了运行 Go 程序,并了解了 PrintPrintlnPrintf 之间的区别。现在你应该对 Go 的语法和程序执行有了基本的理解。