如何用Go编写你的第一个程序

引言

“Hello, World!”程序设计是计算机编程中一个经典的、历史悠久的传统。对于初学者来说,这是一个简单而完整的第一个程序,是确保正确配置环境的好方法。

本教程将引导您在Go中创建此程序。不过,为了让这个程序更有趣,你需要修改传统的“Hello, World!”程序,这样它就会要求用户输入他们的名字。然后在问候语中使用这个名字。当你完成本教程后,运行程序时,你将会有一个看起来像这样的程序:

OutputPlease enter your name.
Sammy
Hello, Sammy! I'm Go!

前期准备

在开始本教程之前,您需要在计算机上设置一个本地Go开发环境。

第1步 - 编写基本的“Hello, World!”程序

编写“Hello, World!”程序,打开一个命令行文本编辑器,比如nano,并创建一个新文件:

nano hello.go

一旦文本文件在终端窗口中打开,你就可以键入这个程序:

hello.go

package main

import "fmt"

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

让我们分解代码的不同组成部分。

package是一个Go的关键字,它定义了这个文件属于哪个代码包。每个文件夹只能有一个包,每个.go文件必须在其文件顶部声明相同的包名。在这个例子中,代码属于main包。
import是一个Go的关键字,它告诉Go编译器你想在这个文件中使用其他哪些包。在这里,您导入标准库附带的fmt包。fmt包提供的格式化和打印函数在开发时很有用。
fmt.Println是一个可以在fmt包中找到的Go 函数,它告诉计算机在屏幕上打印一些文本。

fmt.Println函数后面跟着一系列字符,比如“Hello, World!”,用引号括起来。任何放在引号内的字符都被称为字符串。程序运行时,fmt.Println函数将把这个字符串打印到屏幕上。

通过输入CTRL + X保存并退出nano,当提示保存文件时,按Y

现在可以试试这个程序了。

第2步 - 运行Go程序

用你的“Hello, World!”程序写好后,就可以运行程序了。你将使用go命令,后跟刚刚创建的文件的名称。

go run hello.go
OutputHello, World!

让我们来看看到底发生了什么。

Go程序在运行之前需要编译。当你以文件名调用go run时,在本例中是hello.gogo命令将编译应用程序,然后运行生成的二进制文件。对于用编译编程语言编写的程序,编译器将获取程序的源代码并生成另一种类型的底层代码(例如机器代码)来生成可执行程序。

Go应用程序需要一个main包和一个 main()函数作为应用程序的入口。main函数没有参数也没有返回值。相反,它告诉Go编译器应该将包编译为可执行包。

编译后,代码通过输入main包中的main()函数来执行。它通过调用 fmt. println ("Hello, World!")来执行fmt.Println("Hello, World!")。Println的函数。字符串’ Hello, World!然后**传递**给函数。在这个例子中,字符串' Hello, World!也被称为参数,因为它是一个传递给方法的值。

Hello, World!两边的引号’不会打印到屏幕上,因为你用它们告诉Go字符串在哪里开始和结束。

在这一步中,你创建了一个可以正常工作的“Hello, World!”用Go编程。在下一步中,你将探索如何使程序更具交互性。

第3步 - 提示用户输入

每次运行程序,它都会产生相同的输出。在这一步中,你可以在程序中添加代码,提示用户输入他们的名字。然后在输出中使用它们的名称。

与其修改你现有的程序,不如用nano编辑器创建一个名为greeting.go的新程序:

nano greeting.go

首先,添加下面的代码,提示用户输入他们的名字:

greeting.go

package main

import (
	"fmt"
)

func main() {
  fmt.Println("Please enter your name.")
}

再一次使用fmt.Println函数在屏幕上打印一些文本。

现在添加高亮的代码行来存储用户的输入:

greeting.go

package main

import (
	"fmt"
)

func main() {
  fmt.Println("Please enter your name.")
  var name string
}

var name string这行代码将使用var 关键字创建一个新变量。你将变量命名为name,它的类型将是string

然后,添加突出显示的行来捕获用户的输入:

greeting.go

package main

import (
	"fmt"
)

func main() {
  fmt.Println("Please enter your name.")
  var name string
  fmt.Scanln(&name)
}

fmt.Scanln方法告诉计算机等待键盘输入,以新行或(\n)字符结尾。这将暂停程序,允许用户输入他们想要的任何文本。当用户按下键盘上的ENTER键时,程序将继续。然后捕获所有的击键,包括ENTER键,并将其转换为字符串。

你想在程序的输出中使用这些字符,所以你通过将它们写入到名为name的字符串变量中来保存这些字符。Go将该字符串存储在计算机内存中,直到程序完成运行。

最后,在程序中添加下面这行突出显示的代码,打印输出:

greeting.go

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.Println方法,而是fmt.Printf方法。fmt.Printf函数接受一个字符串,并使用特殊的打印操作(%s),它将name的值注入到字符串中。你这样做是因为Go不支持字符串插值,它允许你将赋值给变量的值放入字符串中。

CTRL + X保存并退出nano,当提示时按Y保存文件。

现在运行程序。你将被提示输入你的名字,所以输入它并按ENTER。输出可能与你所期望的不完全一样:

OutputPlease enter your name.
Sammy
Hi, Sammy
! I'm Go!

在名字后面有一个换行符,而不是Hi, Sammy! I'm Go!

该程序捕获了我们所有的击键,包括我们用来告诉程序继续的ENTER键。在字符串中,按下’ ENTER '键会创建一个特殊字符,它会创建一行新行。程序的输出完全按照你说的去做;它会显示你输入的文本,包括新添加的那一行。这不是你期望的输出,但你可以用额外的函数来修复它。

在编辑器中打开greeting.go文件:

nano greeting.go

在程序中找到这行代码:

greeting.go

...
fmt.Scanln(&name)
...

在它之后添加以下行:

greeting.go

name = strings.TrimSpace(name)

这将使用Go标准库strings包中的TrimSpace函数来处理你用fmt.Scanln捕获的字符串。strings.TrimSpace函数删除字符串开头和结尾的所有空格字符,包括新行。在这个例子中,它删除了按下ENTER时创建的字符串末尾的换行符。

要使用strings包,你需要在程序的开头导入它。

在你的程序中找到这些行:

greeting.go

import (
	"fmt"
)

添加下面这行代码来导入strings包:

greeting.go

import (
	"fmt"
	"strings"
)

你的程序现在将包含以下内容:

greeting.go

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)
}

保存并退出nano。按CTRL + X,然后在提示时按Y保存文件。

再次运行程序:

go run greeting.go

这一次,在你输入你的名字并按下ENTER后,你会得到预期的输出:

OutputPlease enter your name.
Sammy
Hi, Sammy! I'm Go!

你现在有了一个Go程序,它从用户那里获取输入并将其打印回屏幕。

总结

在本教程中,你写了一个“Hello, World!”从用户那里接受输入,处理结果,并显示输出的程序。现在你已经有了一个基本的程序,试着进一步扩展你的程序。例如,询问用户最喜欢的颜色,让程序说它最喜欢的颜色是红色。你甚至可以尝试使用同样的技术来创建一个简单的Mad-Lib程序。

你可能感兴趣的:(Go,golang,开发语言,后端)