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