乐趣区

关于程序员:每周译Go-如何用-Go-编写你的第一个程序

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


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

前言

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

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

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

装置前提

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

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

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

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

nano hello.go

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

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!",用引号括起来。引号内的任何字符都称为 _string_。fmt.Println 函数会在程序运行时将此字符串打印到屏幕上。

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

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

第二步:运行 Go 程序

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

go run hello.go

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

output
Hello, 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 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
}

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

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

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 将该字符串存储在计算机的内存中,直到程序实现运行。

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

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

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

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

output
Please enter your name.
Sammy
Hi, 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 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)
}

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

再次运行程序:

go run greeting.go

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

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

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

总结

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


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

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

本文由 mdnice 多平台公布

退出移动版