如何在Go中编写您的第一个程序

“Hello,World!”计划是计算机编程中经典且历史悠久的传统。对于初学者来说,这是一个简单而完整的第一个程序,它是确保正确配置环境的好方法。本教程将引导您在Go中创建此程序。

介绍

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

本教程将引导您在Go中创建此程序。 但是,为了使程序更有趣,你将修改传统的“Hello,World!”。 程序,以便它询问用户的名字。 然后,您将在问候语中使用该名称。 完成本教程后,运行它时,您将拥有一个如下所示的程序:

Please 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是一个Go 函数 ,位于fmt包中,它告诉计算机将一些文本打印到屏幕上。

您可以通过一系列字符跟踪fmt.Println函数,例如"Hello, World!" ,用引号括起来。 引号内的任何字符都称为字符串 fmt.Println函数将在程序运行时将此字符串打印到屏幕上。

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

现在你可以尝试你的程序了。

第2步 - 运行Go程序

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

go run hello.go

程序将执行并显示此输出:

Hello, World!

让我们来探索实际发生的事情。

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

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

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

Hello, World!两边都有引号Hello, World! 没有打印到屏幕上,因为你用它们来告诉你的字符串开始和结束的位置。

在这一步中,您创建了一个有效的“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的字符串变量来保存这些字符。 将字符串存储在计算机内存中,直到程序运行完毕。

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

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 输出可能与您的预期完全不同:

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

Hi, Sammy! I'm Go!而不是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函数从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)
    fmt.Printf("Hi, %s! I'm Go!", name)
    name = strings.TrimSpace(name)
}

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

再次运行程序:

go run greeting.go

这一次,在输入您的名字并按ENTER ,您将获得预期的输出:

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

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

结论

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


分享按钮