轨道
/
Go
Go
/
练习
/
汽车组装
汽车组装

汽车组装

学习练习

简介

数字

Go 提供了一些基本的数字类型,用来表示整数或浮点数的集合。 你需要哪种类型,取决于你要表示的数值大小,以及程序运行所在计算机的架构(例如 32 位和 64 位)。

在本次练习中,你只需要接触以下几种:

  • int:例如 0、255、2147483647。 一个有符号整数,大小至少为 32 位(取值范围:-2147483648 到 2147483647)。 但这取决于系统的架构。 大多数现代计算机都是 64 位的,因此 int 的大小为 64 位(取值范围:-9223372036854775808 到 9223372036854775807)。

  • float64:例如 0.0、3.14。 包含所有 64 位浮点数。

  • uint:例如 0、255。 一个无符号整数,大小与 int 相同(取值范围:32 位时为 0 到 4294967295,64 位时为 0 到 18446744073709551615)

数字可以通过类型转换转换为其他数字类型。

算术运算符

Go 支持许多标准的算术运算符:

运算符 示例
+ 4 + 6 == 10
- 15 - 10 == 5
* 2 * 3 == 6
/ 13 / 3 == 4
% 13 % 3 == 1

对于整数除法,余数会被舍去(例如 5 / 2 == 2)。

Go 为上述运算符提供了简写赋值形式(例如 a += 5 是 a = a + 5 的简写)。 Go 还支持自增和自减语句 ++ 和 --(例如 a++)。

在类型之间转换

类型之间的转换通过一个函数完成,该函数的名称就是你要转换到的类型名。 例如:

var x int = 42 // x has type int
f := float64(x) // f has type float64 (ie. 42.0)
var y float64 = 11.9 // y has type float64
i := int(y) // i has type int (ie. 11)

对不同类型进行算术运算

在许多语言中,你可以对不同类型的变量进行算术运算,但在 Go 中这会报错。 例如:

var x int = 42

// this line produces an error
value := float32(2.0) * x // invalid operation: mismatched types float32 and int

// you must convert int type to float32 before performing arithmetic operation
value := float32(2.0) * float32(x)

说明

在这个练习中,你将编写代码来分析汽车工厂的生产情况。

1. 计算每小时生产的合格汽车数量

汽车在流水线上生产。 流水线有一定的速度,而且速度可以调整。 流水线速度越快,生产的汽车就越多。 不过,调整流水线的速度也会改变成功生产的汽车数量,也就是生产过程中没有任何错误的汽车。

实现一个函数,接收每小时生产的汽车数量和成功率,计算每小时成功生产的汽车数量。 成功率以百分比表示,范围从0到100:

CalculateWorkingCarsPerHour(1547, 90)
// => 1392.3

**注意:**返回值应该是float64。

2. 计算每分钟生产的合格汽车数量

实现一个函数,接收每小时生产的汽车数量和成功率,计算每分钟成功生产多少辆汽车:

CalculateWorkingCarsPerMinute(1105, 90)
// => 16

**注意:**返回值应该是int。

3. 计算生产成本

通常,单独生产一辆汽车的成本是 $10,000,无论它是否合格。 但只要稍作规划,10 辆汽车一起生产的成本就是 $95,000。

例如,37 辆汽车可以按下面的方式生产: 37 = 3 组十辆 + 7 辆单独的汽车

所以 37 辆汽车的成本是: 3*95,000+7*10,000=355,000

实现函数CalculateCost,计算生产一定数量汽车的成本,无论它们是否合格:

CalculateCost(37)
// => 355000

CalculateCost(21)
// => 200000

**注意:**返回值应该是uint。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Go Exercism

准备好开始 汽车组装 了吗?

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