ホームページ > バックエンド開発 > Golang > Go の埋め込みプリミティブ型には実際の利点がありますか?

Go の埋め込みプリミティブ型には実際の利点がありますか?

Linda Hamilton
リリース: 2024-12-03 01:36:31
オリジナル
215 人が閲覧しました

Do Embedded Primitive Types in Go Offer Any Real Advantages?

埋め込み型: プリミティブ埋め込みの有用性を探る

Go 構造体を使用する場合、プリミティブ型を埋め込むという概念が生じることがあります。以下のコード スニペットを考えてみましょう:

type User struct {
    int32
    Name string
}
ログイン後にコピー

このコードは、int32 プリミティブ型を埋め込む User 構造体を定義します。ただし、そのような埋め込みの有用性に関して次のような疑問が生じます:

埋め込まれたプリミティブにはメソッドがありますか?

いいえ、int32 のような埋め込みプリミティブには関連付けられたメソッドがありません。 。これを確認するには、リフレクションを使用して利用可能なメソッドの数を検査できます。

fmt.Println(reflect.TypeOf(int32(0)).NumMethod())
ログイン後にコピー

出力は 0 になり、int32 にメソッドがないことを示します。

埋め込みプリミティブへのアクセス値

User インスタンス内の埋め込み int32 値にアクセスするには、次のようにします。修飾されていない型名をフィールド名として直接使用します:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート