Hello World
设置开发环境
我们需要创建一个目录来编写我们的hello world代码。打开终端运行以下命令。
1 | mkdir E:\backend\Go_backend\learngo\ |
这样我的E:\backend\Go_backend\
目录下就会创建一个名为learngo
的文件夹。
创建一个Go模块
Go模块用于跟踪我们应用程序的依赖项及其版本,下一步是在文件夹E:\backend\Go_backend\learngo\
中创建一个命名为learngo
的go模块
在E:\backend\Go_backend\learngo\
中运行命令go mod init learngo
,这将会创建一个名为go.mod
的文件,该文件的内容如下:
1 | module learngo |
第一行module learngo
指定模块名称。下一行go 1.19
表示此模块中的文件使用 go version 1.19
当我们了解包时,我们将更详细地讨论Go模块。
Hello World
我们可以用自己喜欢的编辑器在E:\backend\Go_backend\learngo\
文件夹中创建一个名为main.go的文件,内容如下:
1 | package main |
将包含main
函数的文件命名为main.go
是 Go 中的约定俗成的,但其他名称也可以。
运行一个go程序
我们有四种方法来运行一个go程序
1.go insatall
第一种方法就是使用go install
命令。
让我们进入刚刚创建的learngo
文件夹,接下来运行以下命令
1 | go install |
上面的命令将编译程序并将二进制文件安装(复制)到~/go/bin
位置。二进制文件的名称将是go模块的名称。在我们的例子中,它将被命名为learngo
。
现在让我们运行编译后的二进制文件。
1 | ~/go/bin/learngo |
上面的命令将运行learngo
二进制文件并打印以下输出。
1 | Hello World |
我们第一个Go程序就这样完成了。
如果你想避免每次运行程序时都输入整个路径,你可以添加~/go/bin
到你子集的PATH中。
1 | export PATH=$PATH:~/go/bin |
现在你只需要在终端中输入learngo
即可运行该程序。
2.go build
我个人最推荐这一种方法,可以避免太多的外存空间被占用。
第二种方法时使用go build
。它与go install
非常相似,只是它不将编译后的二进制文件安装(复制)到路径~/go/bin
中去,而是在go build
安装位置内创建二进制文件。
在终端中输入以下命令
1 | cd E:\backend\Go_backend\learngo\ |
将当前目录更改为learngo
.
之后,输入以下命令。
1 | go build |
learngo
上面的命令将在当前目录中创建一个名为的二进制文件。ls -al
将显示创建了一个名为的文件learngo
。
键入./learngo
以运行程序。这也将打印
1 | Hello World |
3.go run
第三种方式是使用go run
命令。
在终端中键入命令cd E:\backend\Go_backend\learngo\
以将当前目录更改为learngo
。
之后,输入以下命令。
1 | go run main.go |
输入上述命令后,我们可以看到输出
1 | Hello World |
go run
和go build/go install
命令之间的一个细微差别是,go run
需要.go
文件名作为参数。
在hood下,go run
工作原理与go build
类似. 但它不是将程序编译并安装到当前目录,而是将文件编译到临时位置并从该位置运行文件
4.Go Playground
运行程序的最后一种方式是使用 go playground。虽然这有限制,但当我们想要运行简单的程序时,这种方法会派上用场,因为它使用浏览器并且不需要在本地安装 Go :)。Go团队为 hello world 程序创建了一个Playground。点击这里在线运行程序。
我们还可以使用 go playground 与他人共享您的源代码。
既然我们知道了运行程序的 4 种不同方法,您可能会在决定使用哪种方法时感到困惑。答案是,这取决于当我想快速检查逻辑或了解标准库函数的工作原理时,我通常会使用Playground。在大多数其他情况下(内存空间足够),我更喜欢go install
,因为它让我可以选择从终端中的任何目录运行程序,因为它将所有程序编译到标准~/go/bin/
路径。
hello world程序简要说明
回看我们刚刚编写的hello world程序
1 | package main |
我们详细讨论它的各个部分
package main - 每个go文件都必须以package name语句开头。包用于提供代码划分和可重用性。此处用包名main
。主要功能始终驻留在主包中。
import “fmt” - import 语句用于导入其他包。在我们的例子中,fmt
包被导入,它将在 main 函数中用于将文本打印到标准输出。
func main() -func
关键字标记函数的开始。这main
是一个特殊的功能。程序执行从main
函数开始。{
和大}
括号表示主函数的开始和结束。
fmt.Println(“Hello World”) - 该包的Println
功能fmt
用于将文本写入标准输出。package.Function()
是调用包中函数的语法。