Gopher们,明天咱们就要开始一起进入编写程序的环节啦!!这次,咱们要学习的是《如何用 Go 编写你的第一个程序》,电脑、脑子、本子筹备好~


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

前言

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

本教程将疏导你在 Go 中创立此程序。 然而,为了使程序更乏味,你将批改传统的 “Hello, World!” 程序,以便它能够询问用户的姓名。 而后,你将在回复中应用该姓名。 实现本教程后,你将领有一个运行起来如下所示的程序:

outputPlease enter your name.SammyHello, Sammy! I'm Go!

装置前提

在开始本教程之前,你须要一个本地的 Go 开发环境。你能够依照上面其中一个教程在你的计算机上进行设置:

  • 如何在 macOS 上装置 Go 和设置本地编程环境
  • 如何在 Ubuntu 18.04 上装置 Go 和设置本地编程环境
  • 如何在 Windows 10 上装置 Go 和设置本地编程环境

第一步:编写最根本的 “Hello, World!” 程序

为了编写 Hello, World!” 程序,请关上一个命令行文本编辑器,例如 nano,而后创立一个新文件:

nano hello.go

在 nano 中关上文本文件后,输出你的程序代码:

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

让咱们合成下代码的各个局部。

package 是一个 Go 关键字,它定义了这个文件属于哪个代码包。 每个文件夹只能有一个包,并且文件夹中每个 .go 文件必须在其文件顶部申明雷同的包名。 在这个例子中,代码属于 main 包。

import 是一个 Go 关键字,它通知 Go 编译器你想在这个文件中应用哪些其余包。 在这里,你导入规范库附带的 fmt 包。 fmt 包提供了在开发时很有用的格式化和打印性能。

fmt.Println 是一个 Go 函数,位于 fmt 包中,它通知计算机将一些文本打印到屏幕上。

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

CTRLX 键退出 nano。 当提醒保留文件时,按 Y,而后按 ENTER 退出。

当初你能够试试你的程序了。

第二步:运行 Go 程序

你的 “Hello, World!” 程序写好之后,你就能够运行程序了。你能够用 go  命令而后前面跟着你刚刚创立的文件名。

go run hello.go

程序执行后会显示以下输入:

outputHello, World!

让咱们来摸索下理论产生了什么。

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

Go 应用程序须要一个 main 包和一个确切的 惟一 main() 函数,作为应用程序的入口点。 main 函数不承受任何参数并且不返回任何值。 相同,它通知 Go 编译器应该将包编译为可执行包。

编译后,代码通过在 main 包中输出 main() 函数来执行。 它通过_调用_ fmt.Println 函数来执行fmt.Println("Hello, World!") 行。 Hello, World! 的字符串值被传递给函数。 在此示例中,字符串 Hello, World! 也称为 _参数_,因为它是传递给办法的值。

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

在这一步中,你曾经用 Go 编程创立了一个无效的“Hello, World!” 。 在下一步中,你将摸索如何使程序更具交互性。

第三步:提醒用户输出

每次运行程序时,它都会产生雷同的输入。 在此步骤中,你能够把提醒用户输出他们的姓名增加到程序中。 而后,你将在输入中应用他们的名字。

不要批改现有程序,而是应用 nano 编辑器创立一个名为 greeting.go 的新程序:

nano greeting.go

首先,增加这段代码,提醒用户输出他们的姓名:

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

再一次,你应用 fmt.Println 函数将一些文本打印到屏幕上。

当初增加上面高亮行代码来存储用户的输出:

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

var name string 即将应用 var 关键字 创立一个新变量。 你将变量命名为 “name” ,它的类型为 “string” 。

而后增加上面高亮行代码来捕获用户的输出:

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

fmt.Scanln 办法通知计算机期待以换行符或 (\n) 字符结尾的键盘输入。 该办法会暂停程序,容许用户输出他们想要的任何文本。 当用户按下键盘上的 ENTER 键时,程序将持续。 而后捕捉所有点击,包含 ENTER ,而后将其转换为字符串。

你想在程序中应用这些字符输入,因而你通过将这些字符 写入 到被称为 name 的字符串 变量 中来保留这些字符。 Go 将该字符串存储在计算机的内存中,直到程序实现运行。

最初,在程序中增加以下高亮行来打印输出:

package mainimport ("fmt")func main() {  fmt.Println("Please enter your name.")  var name string  fmt.Scanln(&name)  fmt.Printf("Hi, %s! I'm Go!", name)}

这一次,你应用的是 fmt.Printf,而不是再次应用 fmt.Println 办法。 fmt.Printf 函数承受一个字符串,并应用非凡的打印 占位符_, (%s),将 name 的值注入到字符串中。 你这样做是因为 Go 不反对 _字符串插值 ,它能够让你获取调配给变量的值并将其插入在字符串中。

CTRLX 键退出 nano。 当提醒保留文件时,按 Y

当初运行程序。 零碎将提醒你输出你的姓名,因而请输出并按 ENTER。 输入可能不完全符合你的预期:

outputPlease enter your name.SammyHi, Sammy! I'm Go!

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

该程序捕捉了咱们 所有 的点击,包含咱们按下以通知程序持续的 ENTER 键。 在字符串中,按 ENTER 键会创立一个特殊字符,该字符会创立一个新行。 该程序的输入齐全依照你的要求执行; 它正在显示你输出的文本,包含新行。 这不是你冀望的输入,但你能够应用其余性能对其进行修复。

在你的编辑器外面关上 greeting.go

nano greeting.go

在你的程序里定位到上面这一行:

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

在其前面减少上面一行:

name = strings.TrimSpace(name)

下面应用了 Go 规范库 strings 包中的 TrimSpace 函数,来解决你应用 fmt.Scanln 捕捉的字符串。 strings.TrimSpace 函数从字符串的结尾和结尾删除任何空格字符,包含换行符。 在这种状况下,它会删除你按下 ENTER 时创立的字符串开端的换行符。

要应用 strings 包,你须要在程序顶部导入它。

在你的程序找到上面这几行代码:

import (    "fmt")

减少上面几行来导入 strings 包:

import ("fmt""strings")

你的程序当初蕴含了以下代码:

package mainimport (    "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)}

CTRLX 键退出 nano。 当提醒保留文件时,按 Y

再次运行程序:

go run greeting.go

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

outputPlease enter your name.SammyHi, Sammy! I'm Go!

你当初有一个 Go 程序,它承受用户的输出并将其打印回屏幕。

总结

在本教程中,你编写了 一个 “Hello, World!” 程序,能够从用户那里获取输出、处理结果并显示输入。 既然你有一个根本程序能够应用,请尝试进一步扩大你的程序。 例如,询问用户最喜爱的色彩,让程序说它最喜爱的色彩是红色。 你甚至能够尝试应用雷同的技术来创立一个简略的 Mad-Lib 程序。


2022 GopherChina大会报名仍在炽热进行中!Gopher们扫描下方二维码即可报名参加,还等什么!

大会单干、现场招聘及企业购票等事宜请分割微信:18516100522

本文由mdnice多平台公布