學習軌道
/
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,全部免費。