如何写下你的第一个Go程序
介绍
“Hello World"程序是计算机编程中一个经典而历史悠久的传统。对于新手来说,这是第一个简单而完整的程序,也是一个检验环境配置的好方法。
这篇教程将引导你在使用Go 创建此程序。但是,为了让程序更有趣,你将会修改传统的“Hello World”程序,使它能够询问用户的姓名。从而你能够对用户进行问候。当你跟着教程完成这个程序,run起来你得到一个看起来如下的程序:
Please enter your name.
Sammy
Hello, Sammy! I'm Go!
前期准备
在你开始这篇教程之前,你需要在你的电脑上安装配置了Go的开发环境。你可以按照下面的教程进行安装:
如何在macOS上安装Go并设置本地编程环境
如何在Ubuntu 18.04 上安装Go并设置本地编程环境
如何在Win 10 上安装Go并设置本地编程环境
步骤一:写一个基本的“Hello World"程序
为了写这个“Hello World”程序,打开命令行编辑器如nano
,vim
等来创建一个文件。
nano hello.go / vim hello.go
在终端窗口中打开文本文件后,键入下面的程序:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
让我们分解一下代码的组成成分。
package
是一个Go的关键词,用来定义文件属于哪个代码包。在一个目录下,只能有一个包,并且所有的.go
文件必须在文件开头声明同样的包名。在这个例子中,这段代码是属于main
包的。
import
是Go的一个关键词,用来告诉编译器你想要使用哪些其他的代码包。这里你引入了标准库中的fmt
包。fmt
包提供了许多格式化和打印的函数,这些函数在开发时是非常有用的。
fmt.Println
是fmt
中的函数,可以将一些文本信息打印到屏幕上。
fmt.Println
函数后面跟着被引号引起来的一个字符串序列,这里是“Hello World"
。被引号引起来的任何字符可以被叫做字符串。当程序运行的时候,fmt.Println
函数将把这个字符串打印到屏幕上。
保存并退出文件后,你就可以试着跑一下你的程序。
步骤二:运行一个Go程序
在步骤一中,你写好来一个“Hello World”程序,现在准备来运行一下。此时,你需要使用go
命令了。
go run hello.go
程序将会执行,并显示如下输出:
Hello, World!
让我们来看看究竟发生了什么。
Go程序在运行前是需要编译的,因此当我们使用go run
命令时,go
命令将会先编译该应用然后再运行。对于编译型语言,编译器会将程序中的代码转换成低级的代码(如机器代码)的形式来生成一个可执行的程序。
Go应用需要一个main
包和一个main
函数,作为这个应用的入口点。main
函数不需要任何参数,也不会返回任何的值。它只是告诉Go编译器,要将main
包编译为可执行的包。
一旦编译完成,代码将会从main
包里的main
函数开始执行。
在步骤二中,你已经创建了一个可以运行的“Hello World”的Go程序。接下来你将探索如何让程序更具交互性。
步骤三:提示用户输入
在以上步骤,每次运行程序的时候,都只会产生同样的输出。现在,你可以将提示用户输入他们的名字的功能增加到你的程序中,并将他们的名字作为输出的一部分。
我们新建一个叫做greeting.go
的程序文件。
首先,增加提示用户输入名字的代码:
package main
import (
"fmt"
)
func main() {
fmt.Println("Please enter your name.")
}
再一次的,使用了fmt.Println
函数来输出一些文本信息。
现在,增加了捕捉用户输入的代码:
package main
import (
"fmt"
)
func main() {
fmt.Println("Please enter your name.")
var name string
fmt.Scanln(&name)
fmt.Printf("Hi, %s! I'm Go!", name)
}
fmt.Scanln
函数会等待键盘的输入,直到遇到换行符。它会阻塞该程序,并允许用户输入任何字符,当用户输入完成后,按下ENTER
键,程序将继续执行。需要注意的是,包括最后输入的ENTER
,都会被程序捕捉,并写入name
变量中。得到如下输出:
Please enter your name.
Sammy
Hi, Sammy
! I'm Go!
这和我们的预期有些差别,因为ENTER
被捕捉了导致了换行。
现在加入代码,来处理这个问题:
name = strings.TrimSpace(name)
此时,引入了标准库中strings
包的TrimSpace
函数,此函数将会去除字符串开题和结尾处中的任何空白字符,包括换行符。
现在得到最终代码:
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println("Please enter your name.")
var name string
fmt.Scanln(&name)
name = strings.TrimSpace(name)
fmt.Printf("Hi, %s! I'm Go!", name)
}
保存并退出文件后,运行:
go run greeting.go
这次,在输入名字并按ENTER
后,得到了我们预期的输出:
Please enter your name.
Sammy
Hi, Sammy! I'm Go!
现在,你已经学会了如何写一个Go程序,并获取用户输入,将其打印在屏幕上了。
结论
在这篇教程中,写了一个“Hello World”程序,来捕捉用户输入,处理中间变量和展示输出。现在你已经学会了如何写一个基本的Go程序,但你仍可以做一些拓展,比如询问用户最喜欢的颜色等。