轨道
/
Go
Go
/
练习
/
Gopher 的绝妙千层面
Gopher 的绝妙千层面

Gopher 的绝妙千层面

学习练习

简介

Go 是一门静态类型的编译型编程语言。 本练习将介绍三个主要的语言特性:包、函数和变量。

包

Go 应用程序以包为单位组织。 包是位于同一目录下的一组源文件。 一个目录中的所有源文件必须共用同一个包名。 导入一个包时,只有名称以大写字母开头的实体(函数、类型、变量、常量)才能被使用或访问。 Go 推荐的命名风格是:标识符使用camelCase命名,而那些需要跨包访问的应使用PascalCase。

package lasagna

变量

Go 是静态类型的,这意味着所有变量在编译时都必须有确定的类型。

变量可以通过显式指定类型来定义:

var explicit int // Explicitly typed

你也可以使用初始化值,编译器会把变量的类型设为与初始化值相同的类型。

implicit := 10   // Implicitly typed as an int

变量一旦声明,就可以用=运算符给它赋值。 变量一旦声明,它的类型就永远不能改变。

count := 1 // Assign initial value
count = 2  // Update to new value

count = false // This throws a compiler error due to assigning a non `int` type

常量

常量像变量一样保存一份数据,但它的值在程序执行期间不能改变。

常量用const关键字定义,可以是数字、字符、字符串或布尔值:

const Age = 21 // Defines a numeric constant 'Age' with the value of 21

函数

Go 函数接受零个或多个形参。 形参必须显式指定类型,没有类型推断。

函数使用return关键字返回值。

调用函数时,需要指定函数名,并为函数的每个形参传入实参。

注意,Go 支持两种注释。 单行注释以//开头,多行注释写在/*和*/之间。

package greeting

// Hello is a public function.
func Hello (name string) string {
    return hi(name)
}

// hi is a private function.
func hi (name string) string {
    return "hi " + name
}

说明

在这个练习中,你将编写一些代码,帮助你照着最喜欢的烹饪书做出美味的千层面。

你有四个任务,它们都与烹饪千层面所花的时间有关。

1. 定义预期的烤箱时间(分钟)

用 OvenTime 常量定义千层面应该在烤箱里烤多少分钟。 根据这本烹饪书,预期的烤箱时间是 40 分钟:

OvenTime
// => 40

2. 计算剩余的烤箱时间(分钟)

定义 RemainingOvenTime() 函数,它接受千层面已经在烤箱里烤过的实际分钟数作为形参,并根据上一个任务中预期的烤箱时间,返回千层面还需要在烤箱里待多少分钟。

func RemainingOvenTime(actual int) int {
    // TODO
}

RemainingOvenTime(30)
// => 10

3. 计算准备时间(分钟)

定义 PreparationTime 函数,它接受你给千层面添加的层数作为形参,并返回你准备千层面花了多少分钟,假设每一层需要 2 分钟准备。

func PreparationTime(numberOfLayers int) int {
    // TODO
}

PreparationTime(2)
// => 4

4. 计算已用的工作时间(分钟)

定义 ElapsedTime 函数,它接受两个形参:第一个形参是你给千层面添加的层数,第二个形参是千层面已经在烤箱里烤了多少分钟。 这个函数应该返回你总共花了多少分钟来烹饪千层面,也就是准备时间的分钟数加上此刻千层面在烤箱里已经历的分钟数。

func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
    // TODO
}

ElapsedTime(3, 20)
// => 26
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Go Exercism

准备好开始 Gopher 的绝妙千层面 了吗?

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