首頁 >後端開發 >Golang >你應該在 Go 結構中嵌入像 int32 這樣的原始型別嗎?

你應該在 Go 結構中嵌入像 int32 這樣的原始型別嗎?

DDD
DDD原創
2024-11-27 09:40:12479瀏覽

Should You Embed Primitive Types Like int32 in Go Structs?

在Go 中嵌入原始類型:仔細觀察

在構造自訂類型時,你可能會遇到嵌入原始類型的概念,例如int32 。雖然這種技術通常用於嵌入結構或接口,但嵌入原始類型會引發某些問題。

嵌入 int32 有用嗎?

不,直接嵌入 int32 沒用。與使用常規欄位相比,它不會提供任何直接的好處。 int32 是沒有關聯方法或欄位的基本型別。

int32 有可供使用者實例存取的方法嗎?

不,int32 沒有方法。您可以使用反射包來驗證這一點:

fmt.Println(reflect.TypeOf(int32(0)).NumMethod()) // Prints 0

存取嵌入的原始型別值

要存取 User 結構中嵌入的 int32值,您可以使用非限定類型名稱作為欄位名稱:

type User struct {
    int32
    Name string
}

u := User{3, "Bob"}
fmt.Println(u.int32) // Prints 3

優點和嵌入原始類型的缺點

雖然嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入原始類型可能不會提供直接嵌入的優點,但它可能有缺點:

  • 具有小寫名稱的嵌入欄位(如int32)會變得無法匯出,並且只能在聲明包內存取。
  • 這可能會導致混亂以及程式碼中不必要的混亂。

因此,通常不建議嵌入原始類型,除非有特定原因這樣做,例如實作需要存取嵌入值的介面。

以上是你應該在 Go 結構中嵌入像 int32 這樣的原始型別嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn