iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
Modern Web

後端攻略筆記系列 第 15

Day 15 : Go Interface 複習測驗

  • 分享至 

  • xImage
  •  

Go Interface 複習測驗

大家好,讓我們來回顧一下關於 Go 的 interface 與多型魔法吧!透過這些題目,不只複習,也能檢驗自己是否真的懂了哦!


一、選擇題:interface 是什麼?

  1. Go 的 interface 主要是用來做什麼?
    a) 定義變數
    b) 規定一組方法,讓不同物件能共用相同行為
    c) 改變資料型態
    d) 儲存資料

二、填空題:請填入正確答案

在 Go 裡,只要一個 struct 有實作 interface 裡定義的 _____ (方法名稱),就會自動成為該 interface 的一員。


三、判斷題(對 ✔️或錯 ❌)

  1. interface 需要 struct 顯式宣告「implements」才生效。
  2. 同一個 interface 變數,可以指向不同 struct 類型的實例。
  3. 使用 interface 可以避免寫很多 if-else 判斷。
  4. interface 就是變數類型。
  5. 加入新付款方式只要實作 Pay 方法就可以同舊系統配合。

四、程式碼閱讀題:這段程式碼會輸出什麼?

type Payment interface {
    Pay(amount float64) string
}

type Cash struct{}

func (c Cash) Pay(amount float64) string {
    return "付了現金:" + fmt.Sprintf("%.2f元", amount)
}

func Checkout(p Payment, amount float64) {
    fmt.Println(p.Pay(amount))
}

func main() {
    c := Cash{}
    Checkout(c, 300)
}

五、實作題:試著寫出新的付款方式結構,例如 ApplePay,並實作 Pay 方法,讓它能跟 Checkout 函數一起使用。


六、思考題:

為什麼我們會建議用 interface 來管理多種付款方式,而不是寫很多 if 分支去判斷?


小結

經過這次測驗,如果大部分題目答得出來,恭喜你已經理解 Go interface 的核心概念!
別忘了,interface 是讓你寫出乾淨、易擴展程式碼的關鍵魔法。

下次練習,可以試著加更多付款方式,或改寫 Checkout 讓它更智慧。加油!


解答

以下是之前測驗題目的答案與解析,方便學生複習並理解 Go interface 的核心概念與應用:

一、選擇題

  1. Go 的 interface 主要是用來做什麼?
    答案:b) 規定一組方法,讓不同物件能共用相同行為
    解析:interface 是一種「行為的規範」,定義了物件必須實作的方法,而不在乎物件的具體型別。

二、填空題

在 Go 裡,只要一個 struct 有實作 interface 裡定義的 方法名稱(如 Pay),就會自動成為該 interface 的一員。
解析:Go 的介面實作是隱式的,不需明確宣告;只要方法符合就自動算實作成功。[9][10]


三、判斷題

  1. interface 需要 struct 顯式宣告「implements」才生效。❌
    解析:Go 的 interface 實作完全隱式,不用寫 implements 關鍵字。

  2. 同一個 interface 變數,可以指向不同 struct 類型的實例。✔️
    解析:這是 interface 多型的重點,interface 能包容多種具備相同行為的類型。

  3. 使用 interface 可以避免寫很多 if-else 判斷。✔️
    解析:用 interface 多型,統一呼叫相同方法,不用判斷內部型別,程式碼簡潔。

  4. interface 就是變數類型。✔️(部分正確)
    解析:interface 是一種特殊的型別,代表帶有特定方法的集合,可以當作變數的型別。

  5. 加入新付款方式只要實作 Pay 方法就可以同舊系統配合。✔️
    解析:只要新類型實作 interface 定義的方法,就能被舊代碼兼容使用。


四、程式碼閱讀題

程式碼輸出:

付了現金:300.00元

解析:
Cash struct 實作了 Payment interface 的 Pay 方法,Checkout 呼叫時執行該方法並輸出正確字串。



上一篇
Day 14 : Go Interface 入門 2
下一篇
Day 16 : 用 Go 語言的 for 迴圈,輕鬆解決生活中的重複工作
系列文
後端攻略筆記17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言