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
}
在这个练习中,你将编写一些代码,帮助你照着最喜欢的烹饪书做出美味的千层面。
你有四个任务,它们都与烹饪千层面所花的时间有关。
用 OvenTime 常量定义千层面应该在烤箱里烤多少分钟。
根据这本烹饪书,预期的烤箱时间是 40 分钟:
OvenTime
// => 40
定义 RemainingOvenTime() 函数,它接受千层面已经在烤箱里烤过的实际分钟数作为形参,并根据上一个任务中预期的烤箱时间,返回千层面还需要在烤箱里待多少分钟。
func RemainingOvenTime(actual int) int {
// TODO
}
RemainingOvenTime(30)
// => 10
定义 PreparationTime 函数,它接受你给千层面添加的层数作为形参,并返回你准备千层面花了多少分钟,假设每一层需要 2 分钟准备。
func PreparationTime(numberOfLayers int) int {
// TODO
}
PreparationTime(2)
// => 4
定义 ElapsedTime 函数,它接受两个形参:第一个形参是你给千层面添加的层数,第二个形参是千层面已经在烤箱里烤了多少分钟。
这个函数应该返回你总共花了多少分钟来烹饪千层面,也就是准备时间的分钟数加上此刻千层面在烤箱里已经历的分钟数。
func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
// TODO
}
ElapsedTime(3, 20)
// => 26