轨道
/
Go
Go
/
练习
/
派对机器人
派对机器人

派对机器人

学习练习

简介

包

在 Go 中,应用程序是按包来组织的。 一个包就是位于同一个文件夹中的一组源文件。 同一个文件夹中的所有源文件,都必须在文件顶部声明相同的包名。 按照惯例,包的名称与其所在的文件夹名称相同。

package greeting

Go 提供了内容丰富的标准库,你可以用import关键字把这些包引入到自己的程序里。 标准库中的包通过它们各自的名称来导入。

package greeting

import "fmt"

导入之后,就可以通过包名来使用这个包:

world := "World"
fmt.Sprintf("Hello %s", world)

一个条目能否被其他包中的代码调用,取决于它在 Go 中的声明方式。 要让函数、类型、变量、常量或结构体字段对外可见(称为_导出_),名称必须以大写字母开头。

package greeting

// Hello is a public function (callable from other packages).
func Hello(name string) string {
    return "Hello " + name
}

// hello is a private function (not callable from other packages).
func hello(name string) string {
    return "Hello " + name
}

字符串格式化

Go 内置了一个名为fmt的包(格式化包),它提供了各种函数来操作输入和输出的格式。 最常用的函数是Sprintf,它使用%s这类动词把值插值到字符串中,并返回这个字符串。

import "fmt"

food := "taco"
fmt.Sprintf("Bring me a %s", food)
// Returns: Bring me a taco

在 Go 中,浮点数可以方便地用 Sprintf 的动词来格式化:%g(紧凑表示)、%e(指数)或%f(非指数)。 这三个动词都可以控制字段的宽度和精度。

import "fmt"

number := 4.3242
fmt.Sprintf("%.2f", number)
// Returns: 4.32

你可以在格式化包文档中找到可用动词的完整列表。

fmt还包含其他处理字符串的函数,比如Println,它只是把接收到的实参打印到控制台;还有Printf,它会先像Sprintf那样格式化输入,再打印出来。

说明

从前,有一位古怪的程序员,住在一座装着铁栅栏窗户的奇怪房子里。一天,他从一个在线招聘网站上接下一份工作:做一个派对机器人。这个机器人应该负责迎接客人,并把他们领到座位上。第一版做得非常技术化,暴露出这位程序员不擅长与人打交道。其中有些毛病也延续到了下一版。

1. 欢迎派对上的新客人

实现Welcome函数,用给定的名字返回一条欢迎信息:

Welcome("Christiane")
// => Welcome to my party, Christiane!

2. 欢迎今天过生日的新客人

实现HappyBirthday函数,根据这个人的名字和年龄返回一条生日祝福信息。 遗憾的是,这位程序员有点爱炫耀,所以机器人必须展示出它知道每位客人的生日。

HappyBirthday("Frank", 58)
// => Happy birthday Frank! You are now 58 years old!

3. 指路

实现AssignTable函数来指路。 它应该接受 5 个形参。

  • 要迎接的新客人的名字(string)
  • 桌号(int)
  • 邻座的名字(string)
  • 桌子所在的方向(string)
  • 到桌子的距离(float64)

确切的结果格式见下面的示例。

机器人会以 3 位数字的格式给出桌号。 如果数字不足 3 位,就会在前面补零,凑成 3 位(例如 3 变成 003)。 机器人还会提到桌子的距离。 幸运的是,精度只保留 1 位小数。

AssignTable("Christiane", 27, "Frank", "on the left", 23.7834298)
// =>
// Welcome to my party, Christiane!
// You have been assigned to table 027. Your table is on the left, exactly 23.8 meters from here.
// You will be sitting next to Frank.
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Go Exercism

准备好开始 派对机器人 了吗?

注册 Exercism,借助 34 个概念165 个练习 和真人导师指导,学习并掌握 Go,全部免费。