嵌入類型:探索原始嵌入的有用性
使用 Go 結構體時,可能會出現嵌入原始類型的概念。考慮下面的程式碼片段:
type User struct { int32 Name string }
此程式碼定義了一個嵌入 int32 基元類型的 User 結構。然而,關於這種嵌入的實用性出現了問題:
嵌入式基元有方法嗎?
沒有,像 int32 這樣的嵌入式基元沒有任何與之關聯的方法。為了驗證這一點,可以使用反射來檢查可用方法的數量:
fmt.Println(reflect.TypeOf(int32(0)).NumMethod())
輸出將為 0,表示 int32 沒有方法。
存取嵌入式原語Values
要存取 User 實例中嵌入的 int32 值,可以直接使用非限定型別name作為欄位名稱:
u := User{3, "Bob"} fmt.Printf("%#v\n", u) u.int32 = 4 fmt.Println(u.int32)
輸出:
main.User{int32:3, Name:"Bob"} 4
嵌入的優點
雖然直接嵌入原始類型可能無法提供直接存取相對於方法來說,它在處理介面和方法時確實提供了一定的優勢重寫。
嵌入預聲明類型的缺點
嵌入int32 等預聲明類型的缺點
以上是Go 中的嵌入式基元類型是否具有任何真正的優勢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!