在Go 程式設計領域,人們可能會遇到一種特殊的類型聲明語法,例如:
// PublicKey is the type of Ed25519 public keys. type PublicKey []byte
這個聲明引發了問題:它是否創造了一個繼承自[]byte 的新結構?它只是一個別名嗎? Go 不是禁止繼承嗎?
答案在於類型聲明的概念,特別是類型定義。它會建立一個名為 PublicKey 的新類型,並以 []byte 作為其基礎類型。此類型現在與其基礎類型具有不同的標識。
類型定義:
類型定義有多種用途:
方法與介面:
只有有方法的型別才能實作介面。介面定義了類型必須實作的一組方法。透過建立新類型,可以定義符合特定介面要求的方法。
例如,[]int 無法實作 sort.Interface(排序所需),因此需要一個新類型 sort.IntSlice建立附加所需的方法。這允許您對 sort.IntSlice 類型的值進行排序,但不能對 []int 進行排序。
嵌入與繼承:
與繼承相反,嵌入允許一種類型包含另一種類型的欄位和方法。但是,嵌入類型不會繼承嵌入類型的方法。
總之,Go 中的類型聲明可以創建新的、方便的、可擴展的類型。它們允許您附加方法和實作接口,從而擴展現有類型的功能,而無需訴諸繼承。
以上是Go 的 `PublicKey` 範例中的類型宣告和繼承有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!